実例による PureScript 2 章
ついでに PureScript の勉強も始める。
以下をやり遂げることをまずは最初の目標とする。序文に、最新の状態と異なる、と書いてあるのでメモがてら差分を残していきたい。
Chapter 2.
まず Math がない。purescript-numbers に変わったらしい。spago が良いようなので初期化も spago に乗り換える。
$ spago init
$ spago install numbers
module Main where
import Prelude
import Effect (Effect)
import Effect.Console (logShow)
import Data.Number as Number
diagonal w h = Number.sqrt (w * w + h * h)
main :: Effect Unit
main = do
logShow (diagonal 3.0 4.0)
$ spago run
[1 of 1] Compiling Main
Warning found:
in module Main
at src/Main.purs:10:1 - 10:43 (line 10, column 1 - line 10, column 43)
No type declaration was provided for the top-level declaration of diagonal.
It is good practice to provide type declarations as a form of documentation.
The inferred type of diagonal was:
Number -> Number -> Number
in value declaration diagonal
See https://github.com/purescript/documentation/blob/master/errors/MissingTypeDeclaration.md for more information,
or to contribute content related to this warning.
[info] Build succeeded.
5.0
とりあえず動いた。
演習 1.
$ spago repl
> import Data.Number as Number
> circleArea r = Number.pi * r * r
> circleArea 1.0
3.141592653589793
> circleArea 2.0
12.566370614359172
演習 2.
purescript-globals も deprecated らしくこちらも numbers 等に変わったらしい。意図的には PSCi 上で何かインストールしたモジュールを試せばいいということかな。
# spago install numbers 済み
$ spago repl
PSCi, version 0.15.7
Type :? for help
import Prelude
> :browse Data.Number
abs :: Number -> Number
acos :: Number -> Number
asin :: Number -> Number
atan :: Number -> Number
atan2 :: Number -> Number -> Number
ceil :: Number -> Number
cos :: Number -> Number
e :: Number
exp :: Number -> Number
floor :: Number -> Number
fromString :: String -> Maybe Number
infinity :: Number
isFinite :: Number -> Boolean
isNaN :: Number -> Boolean
ln10 :: Number
ln2 :: Number
log :: Number -> Number
log10e :: Number
log2e :: Number
max :: Number -> Number -> Number
min :: Number -> Number -> Number
nan :: Number
pi :: Number
pow :: Number -> Number -> Number
remainder :: Number -> Number -> Number
round :: Number -> Number
sign :: Number -> Number
sin :: Number -> Number
sqrt :: Number -> Number
sqrt1_2 :: Number
sqrt2 :: Number
tan :: Number -> Number
tau :: Number
trunc :: Number -> Number
> import Data.Number
> isFinite infinity
false
> isFinite 1.0
true
この記事が気に入ったらサポートをしてみませんか?