add TestFib add < func add > func func(fib (Int) (Int) ( bind(n _) if((n 2 <) n +(fib(n 1 -) fib(n 2 -)))))) add parent scope add Scope() arg Find() recursively unless int init func scope parent add Compile stack arg use to simulate stack usage return compile error on empty pop move types into Scope add get macro string -> slot if any add nil type add maybe type add type func push type of value add isa func add call func add parsers.String add multi macro like func add to multi if exists otherwise bind new multi add Sum types X|Y create on demand in TId.Compile require Type literals add fuzzy search to Scope.Find use edit distance to provide alternatives on failed search