開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Haskell (プログラミング言語)
- Haskell Platform(ghci)(処理系)
関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第1章(基本概念)、1.5(定義)、練習問題1.5.1、1.5.2を取り組んでみる。
練習問題1.5.1、1.5.2
コード(Emacs)
-- 1.5.1 fib :: Integer -> Integer fib n | n < 0 = error "negative argument to fibonacci" | n == 0 || n == 1 = n | otherwise = fib (n - 1) + fib (n - 2) -- 1.5.2 abs :: Integer -> Integer abs n = if n < 0 then -n else n
入出力結果(Terminal, ghci)
$ ghci sample5.hs GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help [1 of 1] Compiling Main ( sample5.hs, interpreted ) Ok, modules loaded: Main. *Main> fib -1 <interactive>:1:1: error: • No instance for (Num (Integer -> Integer)) arising from a use of ‘-’ (maybe you haven't applied a function to enough arguments?) • In the expression: fib - 1 In an equation for ‘it’: it = fib - 1 *Main> fib (-1) *** Exception: negative argument to fibonacci CallStack (from HasCallStack): error, called at sample5.hs:4:13 in main:Main *Main> fib 0 0 *Main> fib 1 1 *Main> fib 2 1 *Main> fib 10 55 *Main> fib 20 6765 *Main> abs (-10) <interactive>:8:1: error: Ambiguous occurrence ‘abs’ It could refer to either ‘Prelude.abs’, imported from ‘Prelude’ at sample5.hs:1:1 (and originally defined in ‘GHC.Num’) or ‘Main.abs’, defined at sample5.hs:9:1 *Main> Main.abs (-10) 10 *Main> Main.abs 0 0 *Main> Main.abs 1 1 *Main> Main.abs 10 10 *Main> :q Leaving GHCi. $
0 コメント:
コメントを投稿