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

《Functional Programming in Kotlin》(Manning) Arrow库示例代码更新求助

问题解答

1. 最新版Arrow库适配重构方案

Arrow 1.0及以上版本已经完全废弃并移除了Id类型,同时State的fx推导API也做了简化,不再要求传入外部Monad实例,直接在State.fx代码块内调用bind()即可完成状态上下文的绑定。
重构后的代码如下:

val ns2: State<RNG, List<Int>> =
   State.fx { 
       val x: Int = int.bind() 
       val y: Int = int.bind() 
       val xs: List<Int> = ints(x).bind() 
       xs.map { it % y } 
   }

无需额外导入其他依赖,仅需保证引入的Arrow核心库版本为1.0及以上即可正常通过语法检查并运行。

2. 可运行原始代码的历史版本

原始代码依赖的Id类和旧版State.fxAPI最后保留的稳定版本为Arrow 0.13.2,这也是《Functional Programming in Kotlin》编写过程中使用的Arrow依赖版本,所有0.13.x系列版本均可正常运行该代码片段,2022年之后发布的1.0及以上版本均不再兼容该写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:15:01