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 牛年有哪些能體現不俗的對聯推薦? 打工人 有,我見過一家對聯是可以送禮的那種。哦,不對,是送福氣。包裝特別的好,真的愛死了。買回來開啟是下面這樣的。生活常有喜樂,日子即是福祉。非常的好看。包裝也是特別的棒。是乙個盒子,裡面卷起來的。拿回來的時候是下面這樣的。有沒有一...
有哪些驚豔到你的漫畫?
聲緣乘 個人理解啊,日漫的一些吐槽啊,諧音梗啊,時事槽啊,咱這種才疏學淺的人或許會理解,但不會覺得好笑,畢竟不了解人家文化嘛。所以說乙個中國產的吧,也不是很偏門,左手韓。個人很喜歡他的台詞和畫風,劇情設計更偏向無厘頭吧,畢竟他是星爺的粉絲。有點類似銀魂,用搞笑和日常來說明一些道理,當然還差點火候。 ...