接下來我會寫一寫scheme的學習筆記。嗯,scheme是屬於小眾的語言,但合適用來教學的。
什麼是lat,就是遍歷list裡的每個s-expression,如果發現其中某個不是atom的,則返回false,否則返回true。
(define atom?
(lambda (x)
(and (not (pair? x)) (not (null? x)))))
(define lat?
(lambda (l)
(cond
((null? l) #t)
((atom? (car l)) (lat? (cdr l)))
(else #f))))
(lat? '())
(lat? '(jack sprat could eat no chicken fat))
(lat? '((jack) sprat))
(lat? '(jack (sprat could) eat))
全民Scheme(0) lat的定義
接下來我會寫一寫scheme的學習筆記。嗯,scheme是屬於小眾的語言,但合適用來教學的。什麼是lat,就是遍歷list裡的每乙個s expression,假設發現當中某個不是atom的,則返回false,否則返回true。define atom?lambda x and not pair?x n...
巨集定義中的do while 0
如果你是c 程式設計師,我有理由相信你用過,或者接觸過,至少聽說過mfc,在mfc的afx.h檔案裡面,你會發現很多巨集定義都是用了do.while 0 或do.while false 比如說 define afxassume cond do while 0 粗看我們就會覺得很奇怪,既然迴圈裡面只執...
巨集定義中的do while 0
我們都知道do while迴圈,但是在巨集定義中常常會出現dowhile 0 的用法,這樣的迴圈不是只執行一次嗎?不用do while也可以實現相同的功能呀,那麼為什麼要使用dowhile 0 呢?我們先來分析幾個例子 define fun x func1 x func2 x if true fun...