在 Sanctuary Maybe 上使用 .of 构造函数
Using `.of` Constructor on Sanctuary Maybe
我正在研究 tutorial 函数式编程,它显示了以下使用 sanctuary.js 库的代码示例:
var S = require('sanctuary')
var Maybe = S.Maybe
S.add(
Maybe.of(3)
,Maybe.of(5)
)
.map(n => n * n)
我收到错误 Maybe.of is not a function
。 sanctuary.js API documentation 显示了将 .of
用作 S.of(S.Maybe, 42)
的示例,因此我修改了我的代码:
...
S.of(S.Maybe, 3)
,S.of(S.Maybe, 5)
我收到错误:
add :: FiniteNumber -> FiniteNumber -> FiniteNumber
^^^^^^^^^^^^
1
The value at position 1 is not a member of ‘FiniteNumber’.
我在避难所网站上没有看到任何关于 FiniteNumber 类型的文档 class。我如何使这段代码工作?有什么方法可以将避难所 .of
构造函数链接到类型 classes 上,以便教程网站上的示例有效吗?
您不能将两个 Maybe 相加,只能将两个数字相加。请注意,您阅读的教程使用 add = R.lift(R.add)
.
在避难所,可以使用
S.lift2(S.add, S.Just(3), S.Just(5)) // Just(8)
或
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)
或
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)
为了将一些值包装到 Maybe
你应该使用函数 S.toMaybe
而不是 Maybe.of
我正在研究 tutorial 函数式编程,它显示了以下使用 sanctuary.js 库的代码示例:
var S = require('sanctuary')
var Maybe = S.Maybe
S.add(
Maybe.of(3)
,Maybe.of(5)
)
.map(n => n * n)
我收到错误 Maybe.of is not a function
。 sanctuary.js API documentation 显示了将 .of
用作 S.of(S.Maybe, 42)
的示例,因此我修改了我的代码:
...
S.of(S.Maybe, 3)
,S.of(S.Maybe, 5)
我收到错误:
add :: FiniteNumber -> FiniteNumber -> FiniteNumber
^^^^^^^^^^^^
1
The value at position 1 is not a member of ‘FiniteNumber’.
我在避难所网站上没有看到任何关于 FiniteNumber 类型的文档 class。我如何使这段代码工作?有什么方法可以将避难所 .of
构造函数链接到类型 classes 上,以便教程网站上的示例有效吗?
您不能将两个 Maybe 相加,只能将两个数字相加。请注意,您阅读的教程使用 add = R.lift(R.add)
.
在避难所,可以使用
S.lift2(S.add, S.Just(3), S.Just(5)) // Just(8)
或
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)
或
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)
为了将一些值包装到 Maybe
你应该使用函数 S.toMaybe
而不是 Maybe.of