yfaming on Nostr: 越来越觉得 Scheme ...
越来越觉得 Scheme 挺有意思。现在,我也能写出令人畏惧的代码了。😂
用宏和 call/cc 实现 while 循环。
是的,Scheme 本身不支持循环,只有递归。但是,有了宏让你自定义语法,有 call/cc 让你任意跳转,手搓一个循环就不成问题了。
这个 while 循环,调用时得带着 `(break continue)` 很是碍眼。这是 syntax-rules 卫生宏的限制(为了你好😂)。
可以改用 syntax-case 来实现这个宏,并去掉碍眼的地方,但我现在还不会 syntax-case。
Published at
2026-10-02 14:21:34 UTCEvent JSON
{
"id": "9b2dcfc2920d03e1d1a51e4201cddf60c713b4117c744f7174d9f43e44e7c25a",
"pubkey": "908fbc3babc322eea473a0ab1e6bf6b3adcf899288ac97b2fa79f34ad408d4e4",
"created_at": 1790950894,
"kind": 1,
"tags": [
[
"imeta",
"url https://blossom.primal.net/8e46221b65ff415af6387d1d6bef69dd8441a7135c11c10d9880bace481b65b7.png",
"m image/png",
"size 453550",
"x 8e46221b65ff415af6387d1d6bef69dd8441a7135c11c10d9880bace481b65b7",
"dim 1368x1106",
"thumbhash naeBBIAHf3+Hh3d3B4d3cIj393d3eHd4Bw=="
]
],
"content": "越来越觉得 Scheme 挺有意思。现在,我也能写出令人畏惧的代码了。😂\n\n用宏和 call/cc 实现 while 循环。\n\n是的,Scheme 本身不支持循环,只有递归。但是,有了宏让你自定义语法,有 call/cc 让你任意跳转,手搓一个循环就不成问题了。\n\n这个 while 循环,调用时得带着 `(break continue)` 很是碍眼。这是 syntax-rules 卫生宏的限制(为了你好😂)。\n\n可以改用 syntax-case 来实现这个宏,并去掉碍眼的地方,但我现在还不会 syntax-case。\n\nhttps://blossom.primal.net/8e46221b65ff415af6387d1d6bef69dd8441a7135c11c10d9880bace481b65b7.png",
"sig": "9138aa51688c0bd951c662952799a8bd640e074386050823777d72421d949f3ee2967c933a4a9e564685d65d3367d81366286f068dcfbbb90eede455d7a3706a"
}