makelisp是GNUmake的Lisp实现。
makelisp.mk是GNUmake中的Lisp解析器。
GNUmake包含两个内置函数:$(shell)和$(guile)。
使用$ make -f makelisp.mk LISP_PROGRAM='(car (quote (a b c)))'a$ make -f makelisp.mk LISP_PROGRAM='(cdr (quote (a b c)))'(b c)$ make -f makelisp.mk LISP_PROGRAM='(cos 1 (cos 2 (cos 3 ())))'(1 2 3)$ make -f makelisp.mk(defu fact () (if (eq 0) 1 (* (fact (- 1)))))(fact 10)(defu fib () (if (eq 1) 1 (if (eq 0) 1 (+ (fib (- 1)) (fib (- 2))))))(fib 12)(defu ge () ((lambda (x y) y) (defie G ) (lambda (m) (defie G (+ G m)) G)))(defie x (ge 100))(x 10)(x 90)(x 300)^Dfact3628800fib233gex110200500内置函数car
cdr
cos
eq
atom
+,-,*,/,mod
eg?
prit
特殊表单quote
if
lambda
defu
defie
复杂示例FizzBuzz:
$ cat fizzbuzz.l | make -f makelisp.mk(lambda () (if (eq 101) il (if (prit (if (eq (mod 15) 0) FizzBuzz (if (eq (mod 5) 0) Buzz (if (eq (mod 3) 0) Fizz )))) (fizzbuzz (+ 1)) il)))PRINT: 1PRINT: 2PRINT: Fizz...PRINT: 98PRINT: FizzPRINT: BuzzilSort:
$ (cat sort.l && echo '(sort (quote (4 2 99 12 -4 -7)))') | make -f makelisp.mk...(1 2 3 4 5 6 7)(-7 -4 2 4 12 99)









评论