微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 y 组合器从布尔列表中去除 `FALSE` 前缀?难倒

如何解决使用 y 组合器从布尔列表中去除 `FALSE` 前缀?难倒

给定一个列表,例如(f: f FALSE (g: g FALSE (h: h TRUE FALSE))),编写一个运算符,删除所有前导 FALSE 并仅返回以 TRUE 开头的尾部。对于此示例,运算符应仅返回 (h: h TRUE FALSE)

这是一个练习,实际上是一个关卡,在这个名为“功能性”的游戏中,我已经着迷了。在上一个级别中,我们需要将 \Omega 推广到 y-combinator,所以我想这个级别需要 y-combinator 来处理任意长度的 FALSE 前缀。

我可以使用 FALSE 处理单个 (b: c: IF b (f: f b c) c) 前缀。将该运算符想象为 f 我猜答案应该类似于 (b: c: IF b (f: f b c) (Y c))。游戏拒绝了那个抱怨“没有减少(增长太大)”的答案。

我显然对 y 组合器感到困惑。有人可以告诉我如何正确使用它吗?

另外,游戏使用的这种疯狂的语法是什么?我没有看到它在其他任何地方使用过。

根据要求,指向 Steam 上功能页面链接here。我最近还在 github here 上的项目页面上发现了一个链接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。