開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第2章(単純なデータ型)、2.3(列挙)、練習問題2.3.1、2.3.2、2.3.3を取り組んでみる。
練習問題2.3.1、2.3.2、2.3.3
コード(Emacs)
data Day = Sun | Mon | Tue | Wed | Thu | Fri | Sat deriving (Eq, Ord, Enum, Show) -- 2.3.1 dayBefore :: Day -> Day dayBefore d = if n == 0 then Sat else toEnum (n - 1) where n = fromEnum d -- 2.3.2 data Direction = North | South | East | West deriving (Eq, Ord, Enum, Show) reverse :: Direction -> Direction reverse d | d == North = South | d == South = North | d == East = West | d == West = East -- 2.3.3 data Bool = True | False deriving (Eq, Enum, Show)
入出力結果(Terminal, ghci)
$ ghci sample3.hs GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( sample3.hs, interpreted ) Ok, modules loaded: Main. *Main> dayBefore Sun Sat *Main> dayBefore Mon Sun *Main> dayBefore Sat Fri *Main> reverse North <interactive>:4:1: error: Ambiguous occurrence ‘reverse’ It could refer to either ‘Prelude.reverse’, imported from ‘Prelude’ at sample3.hs:1:1 (and originally defined in ‘GHC.List’) or ‘Main.reverse’, defined at sample3.hs:16:1 *Main> Main.reverse North South *Main> Main.True True *Main> Main.True == Main.False False *Main> Main.True == Main.True True *Main> Main.False == Main.True False *Main> Main.False == Main.False True *Main> :q Leaving GHCi. $
0 コメント:
コメントを投稿