<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          makelispGNU Make 的 Lisp 實現(xiàn)

          聯(lián)合創(chuàng)作 · 2023-10-01 13:54

          makelisp 是 GNU make 的 Lisp 實現(xiàn)。

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

          GNU make 包含兩個內(nèi)置函數(shù):$(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

          內(nèi)置函數(shù)

          • car

          • cdr

          • cons

          • eq

          • atom

          • +, -, *, /, mod

          • neg?

          • print

          特殊表單

          • quote

          • if

          • lambda

          • defun

          • define

          復(fù)雜示例

          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)
          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费日本黄色电影网站 | 国产一卡二卡三卡 | 波多野结衣视频免费在线观看 | 影音先锋最新男人资源 | 香蕉啪啪视频 |