在幻想世界 IO 上映射庇护所
Mapping with sanctuary over fantasy-land IO
我有一个小代码示例,在使用 ramda 时可以按预期工作,但我尝试将其移植到避难所的尝试失败了。
const IO = require('fantasy-io');
const S = require('sanctuary');
const R = require('ramda');
const url = 'http://localhost:8010?param1=arg1¶m2=arg2';
const io = IO.of(url);
// Works as expected:
const r = R.map(R.split('?'), io);
console.dir(r.unsafePerform());
// -> [ 'http://localhost:8010', 'param1=arg1¶m2=arg2' ]
// Fails:
const s = S.map (S.splitOn('?')) (io);
console.dir(s.unsafePerform());
问题是 ramda 版本按预期工作,但 sanctuary 版本退出并出现此错误,有人可以解释这是什么原因吗。
TypeError: Invalid value
splitOn :: String -> String -> Array String
^^^^^^
1) function() {
return x;
} :: Function, (a -> b)
The value at position 1 is not a member of ‘String’.
只发布了一个版本的 fantasy-io:
$ npm view fantasy-io versions --json
[
"0.0.1"
]
它针对的是非常旧的 Fantasy Land 版本,因此不支持 prefixed method names。
该项目已被放弃。我建议寻找替代方案。我推荐Fluture,成熟且维护良好。它也适用于 Sanctuary。
我有一个小代码示例,在使用 ramda 时可以按预期工作,但我尝试将其移植到避难所的尝试失败了。
const IO = require('fantasy-io');
const S = require('sanctuary');
const R = require('ramda');
const url = 'http://localhost:8010?param1=arg1¶m2=arg2';
const io = IO.of(url);
// Works as expected:
const r = R.map(R.split('?'), io);
console.dir(r.unsafePerform());
// -> [ 'http://localhost:8010', 'param1=arg1¶m2=arg2' ]
// Fails:
const s = S.map (S.splitOn('?')) (io);
console.dir(s.unsafePerform());
问题是 ramda 版本按预期工作,但 sanctuary 版本退出并出现此错误,有人可以解释这是什么原因吗。
TypeError: Invalid value
splitOn :: String -> String -> Array String
^^^^^^
1) function() {
return x;
} :: Function, (a -> b)
The value at position 1 is not a member of ‘String’.
只发布了一个版本的 fantasy-io:
$ npm view fantasy-io versions --json
[
"0.0.1"
]
它针对的是非常旧的 Fantasy Land 版本,因此不支持 prefixed method names。
该项目已被放弃。我建议寻找替代方案。我推荐Fluture,成熟且维护良好。它也适用于 Sanctuary。