Hatena::Grouphaskell

(200) Days of Haskell - Ruby 厨だけどハスケルやるよ

2011-09-27

(2) フィボナッチ数列を求める

| 18:30

を写経。

fib.hs

import System

fib 0 = 1
fib 1 = 1
fib n = fib' n 1 1

fib' 1 _ y = y
fib' n x y = fib' (n - 1) y (x + y)

main = do
  args <- getArgs
  print $ fib $ read $ args !! 0

基本的な関数、記号の意味が分からない……

  • !! - 配列から要素を取り出す
Prelude> ['1', '2'] !! 0
'1'
Prelude> read "2"

<interactive>:1:1:
    Ambiguous type variable `a0' in the constraint:
      (Read a0) arising from a use of `read'
    Probable fix: add a type signature that fixes these type variable(s)
    In the expression: read "2"
    In an equation for `it': it = read "2"

Prelude> read "2" :: Int
2

推論できなさそうな時は、 :: Int のように型を指定する必要がある。

getArgs とかはそのまんまなんだろうね~