[lisp] scheme環境搭建與編譯運行
阿新 • • 發佈:2017-10-03
文件格式 .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環境搭建與編譯運行