Login
7 branches 0 tags
Ben (Win10) Compiler now uses multiple passes. c0b4455 4 years ago 199 Commits
nujel / stdlib / math.nuj
[def PI 3.14159]
[def π  3.14159]

[defun ++ [i]
       "Increment I by 1"
       [+  1 i]
]

[defun -- [i]
       "Decrement I by 1"
       [+ -1 i]
]

[defun >> [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]]]
                ]
        ]
]]

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