花哨定义

2021-03-20 09:09:54

我对这个派对有点晚了,但我刚刚发现以下“咖喱”在鸡,诡计和球拍上定义工作,也许是其他人。

我一直写过这些定义,除了我写的那样:

我前进,改变了将它交给我两个最近的项目的新咖喱方式。在那两个中发现了五个地方。我的Sloc-Prepget很感激♥

实际上,我以一种奇怪的方式发现了它。我正在博客帖子有关它的歌曲,即语言没有这样的人,在写它的同时,我不小心地评估了它,它的工作,我很开心,然后我彻底彻底彻底彻底挑剔了文档并了解到了,这不是我的内存是错误的,它不是R5RS,刚被我忘记,但它在一些实现中。

我喜欢看语言添加这个。我明确地没有与“公约”一起使用[]和{}而不是(),我爱我正常的圆形假钉,虽然我对.emacs的defface撬面脸上有非常耐病的价值,也许我没有爱他们那么多。

然而,这种“咖喱定义”,我真的在船上。封装模式是它的全部,宠儿!

咖喱界也适用于词汇封闭。 (副作用和国家,宝贝。♥)

不完全较短,虽然,在某些情况下,它是完美的解决方案:当您需要多个计数器时,或者,当您传递计数器的值而不是现有的参考时。

您可以有任何绑定,交替。我从来没有理解那里的旁边对的潺潺声,虽然我不是众所周知的工具。从前几天使用define-ir-syntax *,它可以看起来像这样:

(定义-er-syntax *定义 - 关闭((定义封闭绑定头部机身......)(匹配(chichable.syntax#扩展 - 汇率定义头部身体'(定义名称body)` (定义,姓名(让DESC((LIS绑定))(缺点(列表(CAR LIS)(CADR LIS))(如果(CDDR LIS))'()(DESC(DESC(CDDR LIS ))))) ,身体))))))

(定义封闭(x 5 y 10)(jolly)(inc!x)(dec!y)(list x y))(列表(jolly)(jolly)(jolly))

匹配的匹配与匹配lambda和match-lambda *作为快捷方式,它们非常棒,但让我们在其中的顶部添加匹配定义作为快捷方式。也许这是在这一点的便士......

(define-ir-syntax匹配 - 定义`(定义,(caaadr exp)(match-lambda *,@(lem(lem(el)(缺点(Cdar El)(CDR EL)))(CDR exp)))) )

(匹配 - 定义((my-map proc())'())((my-map proc(x。xs))(缺点(proc x)(my-map proc xs)))))(我的-map - (iota 4))

(匹配 - 定义(((my-map proc)())'())(((my-map proc)(x。xs))(缺点(proc x)((my-map proc)xs ))))((我的地图 - )(iota 4)) (虽然此实现仅破坏了外部参数列表。能够在每个级别上模式匹配是真的很棒。) (定义语法caaaddr(o caaar cddr))(define-ir-syntax匹配 - 定义 - 关闭`(定义,(caaaddr exp)(设定)(let desc((lis(cadr exp)))(缺点( 列表(轿车)(CADR LIS))(如果(染色体?(CDDR LIS))'()(DESC(CDDR LIS))))(匹配-LAMBDA *,@(地图(Lambda(EL)) (缺点(CDAR EL)(CDR EL)))(CDDR EXP)))))))(匹配 - 定义 - 闭合(x 0)((计数器)(INC!x))((计数器'重置) (设置!x 0))))(列表(计数器)(计数器)(计数器'复位)(计数器)(计数器))