1. 程式人生 > >[lisp] scheme環境搭建與編譯運行

[lisp] scheme環境搭建與編譯運行

文件格式 .com book factorial 加載過程 牛頓法 搭建 mac 代碼

搭建環境參考這篇

http://leochin.com/mac-scheme-install/

用文本編輯器寫代碼 保存文件格式為 .scm

在終端中cd到scm文件所在文件夾,

執行 (cf "scm_name")編譯文件

然後執行 (load "scm_name.scm")加載文件,加載過程中會把文件執行一遍,就像Python一樣,或者應該反過來說。

下面是幾個lisp程序,參考書籍 SICP

求余:

1 (define (remainder m n)(
2         if (< (- m n) n)
3         (- m n)
4         (remainder (- m n) n)
5 ) 6 )

牛頓法求開方:

 1 (define (sqrt x)
 2 (define (sqrt_iter guess x)
 3 (if (good_enough? guess x)
 4  guess
 5  (sqrt_iter (improve_guess guess x)
 6  x )))
 7 
 8 
 9 (define (improve_guess guess x)
10 (average guess (/ x guess)))
11 
12 (define (average a b)
13 (/ (+ a b) 2))
14 
15 (define (good_enough? guess x)
16 (< (abs (- (square guess) x)) 0.001)) 17 18 (define (square x) (* x x)) 19 20 (define (abs x) 21 (if (< x 0) 22 (- x) 23 x) 24 ) 25 (sqrt_iter 1.0 x) 26 )

階乘:

1 (define (factorial n)
2     (fact_iter 1 1 n))
3 
4 (define (fact_iter res count n)
5     (if (> count n)
6         res
7         (fact_iter (* res count) (+ count 1) n)))

求冪:

 1 (define (expt x n)(
 2     expt_iter x 1 n)
 3 )
 4 
 5 (define (expt_iter x res n)(
 6         if (= n 0)
 7             res
 8             (expt_iter x (* x res) (- n 1))
 9     )
10 )

最大公約數:

 (define (gcd m n)(
    if (= n 0)
        m
        (gcd n (remainder m n))
))

fibonacci:

1 (define (fib n)
2    (fib_iter 1 0 n) )
3 
4 (define (fib_iter next pre count)(
5     if (= count 0)
6         pre
7         (fib_iter (+ pre next) next (- count 1))
8 ))

[lisp] scheme環境搭建與編譯運行