You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raku是否有类似Haskell的反向应用操作符?feed操作符为何不支持lambda?

Raku中实现类似Haskell &的反向应用操作

你遇到的问题是Raku的==>喂料操作符对右侧语法有明确要求:它仅允许例程调用或者支持.push的变量,而(* + 1)这种WhateverCurry表达式属于裸可调用对象,并非调用形式,因此触发编译错误。

以下是几种可行的解决方式:

1. 用代码块替代WhateverCurry

==>会自动将左侧的值传入代码块的默认变量$_,写法简洁直观:

> 2 ==> { $_ + 1 }
3

如果偏好显式参数,也可以使用位置参数标记:

> 2 ==> { $^a + 1 }
3

2. 将WhateverCurry转为合法调用形式

给WhateverCurry添加参数占位符,让它成为符合要求的例程调用:

> 2 ==> (* + 1)($_)
3

或者用.操作符显式触发调用:

> 2 ==> .(* + 1)
3

3. 使用andthen操作符(更贴合Haskell &的语义)

Raku的andthen操作符专为链式反向应用设计,行为和Haskell的&高度一致,支持所有可调用对象:

> 2 andthen (* + 1)
3
> 2 andthen { $_ * 3 } andthen (* + 5)
11

内容的提问来源于stack exchange,提问作者menfon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:50:33