Thinking Functionally with Haskell勉強メモ: 第3章
数について。
Int, Integer, Float, Complexなど多くの数の型がある。すべてtype class Num
に属している。
Num
はEq
とShow
のsubclass。Ord
は?と一瞬思ったが複素数は順序が定義されていない。
Haskellでユーザが0以上の整数として自然数を定義する場合:
data Nat = Zero | Succ Nat
自然数NatはZeroか、自然数の後者のいずれかである、という意味になる。
Succ
は非Strict。つまりZero == Succ undefined
がundefined
ではなくFalse
を返し得る。
data Nat = Zero | Succ !Nat
!Nat
のようにstrictness flagを建てるとZero == Succ undefined
がundefined
になる。