将子句转换为 Fun
如何使用 Fun 在一行中表示该子句。
perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].
How to represent this clause in one line using Fun.
perms([]) -> [[]];
perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我相信你正在寻求的是一种“自递归”的乐趣。
fun 语法无法在 fun 主体内引用自身,因此需要使用一种技巧,其中要调用的 fun 是参数。这通常称为 ycombinator。
一些示例代码可能会更好地描述它:
正如您所看到的,这非常尴尬。如果您只是想引用自己的 perms 函数,可以使用代码:
fun perms/1
。I believe what you are seeking is for a fun to be "self-recursive".
The fun syntax is not able to refer to itself inside the fun body, so one need to use a trick where the fun to call is a parameter. This is commonly referred to as the ycombinator.
Some example code will likely describe it better:
As you can see this is quite awkward. If you just wanted to refer to the perms functions of yours, you can use the code:
fun perms/1
.我还得到了另一个类似于克里斯蒂安的答案。
I also got another answer similar to Christian.