Arantium Maestum

プログラミング、囲碁、読書の話題

Thinking Functionally with Haskell勉強メモ: 第3章

数について。

Int, Integer, Float, Complexなど多くの数の型がある。すべてtype class Numに属している。

NumEqShowのsubclass。Ordは?と一瞬思ったが複素数は順序が定義されていない。

Haskellでユーザが0以上の整数として自然数を定義する場合:

data Nat = Zero | Succ Nat

自然数NatはZeroか、自然数の後者のいずれかである、という意味になる。

Succは非Strict。つまりZero == Succ undefinedundefinedではなくFalseを返し得る。

data Nat = Zero | Succ !Nat

!Natのようにstrictness flagを建てるとZero == Succ undefinedundefinedになる。