aboutsummaryrefslogtreecommitdiffhomepage
path: root/samples/rosetta/fibonacci_sequence.bruijn
blob: dc6496280160bad6b3953f5cff4273999d78e7b0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
:import std/Combinator .
:import std/Math .
:import std/List .

# unary/Church fibonacci (moderately fast but very high space complexity)
fib-unary [0 [[[2 0 [2 (1 0)]]]] k i]

:test (fib-unary (+6u)) ((+8u))

# ternary fibonacci using infinite list iteration (very fast)
fib-list index fibs
	fibs head <$> (iterate &[[0 : (1 + 0)]] ((+0) : (+1)))

:test (fib-list (+6)) ((+8))

# recursive fib (very slow)
fib-rec y [[0 <? (+1) (+0) (0 <? (+2) (+1) rec)]]
	rec (1 --0) + (1 --(--0))

:test (fib-rec (+6)) ((+8))