makelisp GNU Make 的 Lisp 实现开源项目

我要开发同款
匿名用户2015年09月16日
157阅读
开发技术Lisp
所属分类开发工具、项目构建
授权协议未知

作品详情

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='(cons 1 (cons 2 (cons 3 ())))'(1 2 3)$ make -f makelisp.mk(defun fact (n) (if (eq n 0) 1 (* n (fact (- n 1)))))(fact 10)(defun fib (n) (if (eq n 1) 1 (if (eq n 0) 1 (+ (fib (- n 1)) (fib (- n 2))))))(fib 12)(defun gen (n) ((lambda (x y) y) (define G n) (lambda (m) (define G (+ G m)) G)))(define x (gen 100))(x 10)(x 90)(x 300)^Dfact3628800fib233genx110200500内置函数

car

cdr

cons

eq

atom

+,-,*,/,mod

neg?

print

特殊表单

quote

if

lambda

defun

define

复杂示例

FizzBuzz:

$ cat fizzbuzz.l | make -f makelisp.mk(lambda (n) (if (eq n 101) nil (if (print (if (eq (mod n 15) 0) FizzBuzz (if (eq (mod n 5) 0) Buzz (if (eq (mod n 3) 0) Fizz n)))) (fizzbuzz (+ n 1)) nil)))PRINT:   1PRINT:   2PRINT:   Fizz...PRINT:   98PRINT:   FizzPRINT:   Buzznil

Sort:

$ (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)
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论