cal*_*-io 5 javascript functional-programming fantasyland sanctuary
我正在研究有关函数式编程的教程,该教程使用sanctuary.js库显示以下代码示例:
var S = require('sanctuary')
var Maybe = S.Maybe
S.add(
Maybe.of(3)
,Maybe.of(5)
)
.map(n => n * n)
Run Code Online (Sandbox Code Playgroud)
我得到了错误Maybe.of is not a function。sanctuary.js API文档显示了一个使用.ofas 的示例S.of(S.Maybe, 42),因此我修改了我的代码,如下所示:
...
S.of(S.Maybe, 3)
,S.of(S.Maybe, 5)
Run Code Online (Sandbox Code Playgroud)
我得到错误:
add :: FiniteNumber -> FiniteNumber -> FiniteNumber
^^^^^^^^^^^^
1
The value at position 1 is not a member of ‘FiniteNumber’.
Run Code Online (Sandbox Code Playgroud)
我没有在庇护所网站上看到有关FiniteNumber类型类的任何文档。如何使此代码起作用?并且有什么方法可以将保护区.of构造函数链接到类型类上,因此教程站点上的示例可以正常工作吗?
你不能将两个 Maybe 相加,你只能将两个数字相加。请注意,您阅读的教程使用add = R.lift(R.add).
在庇护所中,您可以使用
S.lift2(S.add, S.Just(3), S.Just(5)) // Just(8)
Run Code Online (Sandbox Code Playgroud)
或者
S.ap(S.map(S.add, S.Just(3)), S.Just(5)) // Just(8)
S.Just(3).map(S.add).ap(S.Just(5)) // Just(8)
Run Code Online (Sandbox Code Playgroud)
或者
S.ap(S.ap(S.Just(S.add), S.Just(3)), S.Just(5)) // Just(8)
S.Just(S.add).ap(S.Just(3)).ap(S.Just(5)) // Just(8)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |