全民Scheme(0) lat的定義

2021-07-03 10:20:45 字數 489 閱讀 6209

接下來我會寫一寫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...