Haskellでフィボナッチ数列

haskellの練習のために、フィボナッチ数を計算するプログラムを作った。
nを入力すると第n番目のフィボナッチ数を返す。
O(n)で計算できるようにした。
モナドはあまり理解できていないが、かっこよさそうなので利用してみた。(>>=)

f :: Int -> Int -> Int -> Int
f a b n | n <= 2 = 1
        | n == 3 = a + b
	| otherwise = f (a + b) a (n - 1)

main = getContents >>= putStrLn . show . f 1 1 . read

配列を使う方法がわからん。