23 lines
905 B
Plaintext
23 lines
905 B
Plaintext
#!/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 (+ (fib (- n 1)) (fib (- n 2))))))
|
|
|
|
(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)
|