実例による 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

この記事が気に入ったらサポートをしてみませんか?