開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第3章(数値)、3.1(自然数)、練習問題3.1.1、3.1.2、3.1.3、3.1.4、3.1.5を取り組んでみる。
練習問題3.1.1、3.1.2、3.1.3、3.1.4、3.1.5
コード(Emacs)
-- 3.1.1 data Zplus = ONE | Succ' Zplus -- 3.1.2 data Nat = Zero | Succ Nat deriving (Eq, Ord, Show) convert :: Nat -> Integer convert Zero = 0 convert (Succ n) = 1 Prelude.+ convert n -- 3.1.3 (+) :: Nat -> Nat -> Nat (+) Zero n = n (+) (Succ n) m = Succ (n Main.+ m) (*) :: Nat -> Nat -> Nat (*) Zero n = Zero (*) (Succ n) m = m Main.+ (n Main.* m) -- 3.1.4 n * n ステップ -- 3.1.5 sub :: Nat -> Nat -> Nat sub Zero n = Zero sub (Succ n) Zero = n sub (Succ n) (Succ m) = n `sub` m a = Zero b = Succ a c = b Main.+ b d = c Main.* c e = c Main.* d main :: IO () main = do print Zero print (Succ Zero) print a print b print c print d print e print $ d `sub` e print $ e `sub` d
入出力結果(Terminal, ghci)
$ runghc sample1.hs Zero Succ Zero Zero Succ Zero Succ (Succ Zero) Succ (Succ (Succ (Succ Zero))) Succ (Succ (Succ (Succ (Succ (Succ (Succ (Succ Zero))))))) Zero Succ (Succ (Succ Zero)) $
0 コメント:
コメントを投稿