1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
module nfib_nsa // compile with -nsa -h 2000m -gci 2000m (+) :: !Int !Int -> Int (+) a b = code inline { addI } (-) :: !Int !Int -> Int (-) a b = code inline { subI } (<) :: !Int !Int -> Bool (<) a b = code inline { ltI } nfib :: Int -> Int nfib n | n < 2 = 1 = nfib (n-2) + nfib (n-1) + 1 Start = nfib 34