首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用y-combinator从布尔列表中去掉‘FALSE`前缀?被难住了

使用y-combinator从布尔列表中去掉‘FALSE`前缀?被难住了
EN

Stack Overflow用户
提问于 2021-07-24 10:53:28
回答 1查看 60关注 0票数 2

给定一个列表,例如(f: f FALSE (g: g FALSE (h: h TRUE FALSE))),编写一个运算符,删除所有前导FALSE,只返回以TRUE开头的尾部。在本例中,操作符应该只返回(h: h TRUE FALSE)

这是一个练习,实际上是一个级别,在这个被称为“功能”的游戏中,我已经变得痴迷。在上一层中,我们需要将Omega泛化到y-组合器中,所以我认为这一层需要y-组合器来处理任意长度的FALSE前缀。

我可以用(b: c: IF b (f: f b c) c)处理单个FALSE前缀。假设这个运算符是f,我猜答案应该类似于(b: c: IF b (f: f b c) (Y c))。这个游戏拒绝了这个答案,抱怨“没有减少(变得太大)”。

我显然被y-combinator搞糊涂了。有人能教我如何正确使用它吗?

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

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

EN

回答 1

Stack Overflow用户

发布于 2021-08-27 06:28:48

试试这个:Y(f: x: (FST x) x (f(SND x)))

通过使用Y组合器,如果头部(x)为真,则返回整个列表(FST x),否则以尾部(SND x)为参数递归调用自身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68506626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档