-- fibonacci.hs: conjuring a fibonacci function
import Conjure
fibonacci :: Int -> Int
fibonacci 0 = 1
fibonacci 1 = 1
fibonacci 2 = 2
fibonacci 3 = 3
fibonacci 4 = 5
fibonacci 5 = 8
fibonacci 6 = 13
fibonacci 7 = 21
as :: Args
as = args{maxSize=13,maxRecursiveCalls=2}
main :: IO ()
main = do
conjureWith as "fibonacci n" fibonacci
[ val (1::Int)
, value "+" ((+) :: Int -> Int -> Int)
, value "dec" (subtract 1 :: Int -> Int)
, value "<=" ((<=) :: Int -> Int -> Bool)
]
-- expected function:
-- fibonacci n = if n <= 1 then 1 else fibonacci (dec n) + fibonacci (dec (dec n))
-- 1 2 3 4 5 6 7 8 9 10 11 12 13