Login
7 branches 0 tags
Ben (X220) Some more boolean testcases 4de0487 4 years ago 68 Commits
nujel / stdlib / math.nuj
[def PI [const 3.14159]]
[def π  [const 3.14159]]

[def ++ [λ [i]
	"[+ I 1]"
	[+ i 1]
]]

[def -- [λ [i]
	"[- I 1]"
	[- i 1]
]]

[def >> [λ [val amount]
	"Shifts VAL by AMOUNT bits to the right"
	[ash val [- amount]]
]]

[def min [let []
	[def iter [λ [a l]
		[cond [[nil? l] a]
		      [[< a [car l]] [iter a [cdr l]]]
		      [#t [iter [car l] [cdr l]]]
		]
	]]

	[λ [...l]
		"Returns the minimum value of its arguments"
		[cond [[nil? ...l] 0]
		      [[nil? [cdr ...l]] [car ...l]]
		      [#t [iter [car ...l] [cdr ...l]]]
		]
	]
]]

[def max [let []
	[def iter [λ [a l]
		[cond [[nil? l] a]
		      [[> a [car l]] [iter a [cdr l]]]
		      [#t [iter [car l] [cdr l]]]
		]
	]]

	[λ [...l]
		"Returns the maximum value of its arguments"
		[cond [[nil? ...l] 0]
		      [[nil? [cdr ...l]] [car ...l]]
		      [#t [iter [car ...l] [cdr ...l]]]
		]
	]
]]

[def fib [λ [i]
	   "Terribly inefficient, but useful for testing the GC"
	   [if [< i 2]
	       i
	       [+ [fib [- i 2]] [fib [- i 1]]]]
]]