開発環境
- 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 コメント:
コメントを投稿