Added new benches and will add the rest of them
This commit is contained in:
24
koka_bench/newlisp/newlisp-macro-fib-let.nl
Normal file
24
koka_bench/newlisp/newlisp-macro-fib-let.nl
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env newlisp
|
||||
;;
|
||||
;; fibonacci series
|
||||
;; mostly from http://www.newlisp.org/syntax.cgi?benchmarks/fibo.newlisp.txt
|
||||
;; modified slightly to match others
|
||||
;;
|
||||
|
||||
(define (fib n)
|
||||
(my-match (0 1)
|
||||
(1 1)
|
||||
(n (let (a (fib (- n 1))
|
||||
b (fib (- n 2))
|
||||
) (+ a b)))))
|
||||
|
||||
(define (my-match-helper x_sym cases i) (cond ((< i (- (length cases) 1)) (let (test__body_func (evaluate_case x_sym (cases i)))
|
||||
(append (list (list (test__body_func 0) ((test__body_func 1) (cases (+ i 1))))) (my-match-helper x_sym cases (+ i 2)))))
|
||||
(true '((true ("none matched"))))))
|
||||
|
||||
(macro (my-match X) X)
|
||||
(constant 'my-match (lambda-macro (X) (expand (list let (list '__MATCH_SYM 'X) (cons cond (my-match-helper '__MATCH_SYM (args) 0))) 'X)))
|
||||
|
||||
(println (fib (integer (main-args 2))))
|
||||
|
||||
(exit)
|
||||
Reference in New Issue
Block a user