当前位置: 首页 > 软件库 > 开发工具 > 项目构建 >

makelisp

GNU Make 的 Lisp 实现
授权协议 未知
开发语言 Lisp
所属分类 开发工具、 项目构建
软件类型 开源软件
地区 不详
投 递 者 晋承运
操作系统 Linux
开源组织
适用人群 未知
 软件概览

makelisp 是 GNU make 的 Lisp 实现。

makelisp.mk 是 GNU make 中的 Lisp 解析器。

GNU make 包含两个内置函数:$(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)
^D
fact
3628800
fib
233
gen
x
110
200
500

内置函数

  • 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:   1
PRINT:   2
PRINT:   Fizz
...
PRINT:   98
PRINT:   Fizz
PRINT:   Buzz
nil

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)
 相关资料
  • 本书适用于那些想更上一层楼的 Lisp 程序员。书中假设读者已经初步了解 Lisp, 但不要求有丰富的编程经验。最初几章里会重温很多基础知识。我希望这些章节也会让有经验的Lisp 程序员感兴趣, 因为它们以崭新的视角展示了熟知的主题。 通常很难一语道清一门编程语言的精髓, 但 John Foderato 的话已经很贴切了: Lisp 是一门可编程的编程语言。 (Lisp is a programm

  • Quickproject 是一个用于创建 Common Lisp 工程框架的库。创建项目后,它扩展了 ASDF 注册表,以便可以立即加载项目。 示例 * (quickproject:make-project #p"~/src/myproject/" :depends-on '(drakma cxml))"myproject"* (asdf:load-system "myproject")load

  • Little Lisp 是一个用 JavaScript 编写的小型 Lisp 解释器。

  • Bud是一个使用Java实现的类Scheme的Lisp方言解释器,简单、轻量,能够十分方便地嵌入Java程序中使用。 Bud实现了R5RS中大多数的特殊形式(Special Form)以及内置函数,其中包含:quote、lambda、if、cond、and、or、car、cdr、eq?以及类型判断和算数函数。 使用Bud需要Java 7及以上版本,编译需要Maven 3.0.4以上。 特性: 一等

  • Emacs Lisp,一种直译式的脚本语言,为LISP的方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展他们的功能。它的直译器是以C语言来实作的。它受到Maclisp的影响很大,但是跟Common Lisp与Scheme有所不同。

  • Lisp是仅次于Fortran的第二古老的高级编程语言,并且从早期开始就发生了很大变化,并且在其历史上存在许多方言。 今天,最广为人知的通用Lisp方言是Common Lisp和Scheme。 Lisp是John McCarthy于1958年在麻省理工学院(MIT)工作时发明的。 在学习LISP编程语言时,此参考将引导您通过简单实用的方法。

  • Common Lisp Koans(lisp-koans)是一个语言学习练习程序,类似 ruby koans,python koans 等等。Common Lisp Koans 主要是帮助学习一些 lisp 规范特性和改进,可以学习到大量的 Common Lisp 语言特性。 终端,在文件 'contemplate.lsp' 执行 lisp 解析器: sbcl --script contempla

  • Lisp Web Toolkit 是使用 Common Lisp 开发的,面向对象的开源 Web 框架,支持 URI、HTML、CSS、JSON、HTTP、WebSocket 等功能。