有哪些驚豔到你的 Lisp 巨集?

時間 2021-06-01 09:07:56

1樓:楊雙成

當然是被王垠稱為「外星人"的 Dan Friedman 和 R. Kent Dybvig 等人寫的 match 。

這個巨集為 Scheme 實現了模式匹配。

在 match 的基礎上寫乙個定義模式匹配的函式的巨集。

這個巨集達到甚至超過 ML 家族語言模式匹配的簡潔程度。

以下三個例子來自《ML程式設計教程》,分別改寫成 Scheme。

funfact0=

1|factn=

n*fact(n-

1);(defun

fact[0

1][,

n(* n

(fact(-

n1)))])

這個不相上下。

fun max [mm

| max (m::n::ns) = if m > nthen max(m::nselse max(n::ns);

(defun

max[(,n

)n][(

,n1.,

[n2])(

if (

>n1n2)n1

n2)])

Scheme由於語法一致,更美觀。

funprod

=1|prod

(n::ns)=

n*(prod

ns);

(defun

prod

[()1][(

,n.,

[n*])(

* nn*)])

match 能自動遞迴呼叫,更簡潔。

補充。其實除了 max 這個例子之外,熟悉 Scheme 的人,喜歡不用模式匹配。

max 不用模式匹配真的很囉嗦。

(define

(max ns)

(let

((n1

(car

ns))(n*

(cdr

ns)))

(if(null? n*)

n1(let

((n2

(car

n*))(n*

(cdr

n*)))

(if(>

n1n2)(

max(cons

n1n*))(

max(cons

n2n*

)))))))

2樓:開源醬

跑個題Common Lisp 的 loop 巨集

這不是驚豔這是驚嚇。。。

內建一堆非 Lisp 風格的關鍵字,剛看到那個的時候嚇得我都飛起來了。。。

有哪些驚豔到你的古詩?

小雨滴 凡有所相,皆是虛妄。若見諸相非相,即見如來。金剛經西北有高樓 兩漢 佚名 西北有高樓,上與浮雲齊。交疏結綺窗,阿閣三重階。上有弦歌聲,音響一何悲!誰能為此曲,無乃杞梁妻。清商隨風發,中曲正徘徊。一彈再三嘆,慷慨有餘哀。不惜歌者苦,但傷知音稀。願為雙鴻鵠,奮翅起高飛。我見青山多嫵媚,料青山見我...

有哪些驚豔到你的春聯?

乘風丶逐夢 乘風丶逐夢 2021 牛年有哪些能體現不俗的對聯推薦? 打工人 有,我見過一家對聯是可以送禮的那種。哦,不對,是送福氣。包裝特別的好,真的愛死了。買回來開啟是下面這樣的。生活常有喜樂,日子即是福祉。非常的好看。包裝也是特別的棒。是乙個盒子,裡面卷起來的。拿回來的時候是下面這樣的。有沒有一...

有哪些驚豔到你的漫畫?

聲緣乘 個人理解啊,日漫的一些吐槽啊,諧音梗啊,時事槽啊,咱這種才疏學淺的人或許會理解,但不會覺得好笑,畢竟不了解人家文化嘛。所以說乙個中國產的吧,也不是很偏門,左手韓。個人很喜歡他的台詞和畫風,劇情設計更偏向無厘頭吧,畢竟他是星爺的粉絲。有點類似銀魂,用搞笑和日常來說明一些道理,當然還差點火候。 ...