首页 > 解决方案 > 与幻想世界 IO 上的避难所映射

问题描述

我有一个小的代码示例,在使用 ramda 时可以按预期工作,但是我尝试将其移植到 sanctuary 失败了。

const IO = require('fantasy-io');
const S = require('sanctuary');
const R = require('ramda');

const url = 'http://localhost:8010?param1=arg1&param2=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&param2=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’.

标签: sanctuary

解决方案


只有一个版本的 Fantasy-io 曾经发布过:

$ npm view fantasy-io versions --json
[
  "0.0.1"
]

它针对的是非常旧的 Fantasy Land 版本,因此不支持带前缀的方法名称

该项目已被放弃。我建议寻找替代方案。我推荐Fluture,它成熟且维护良好。它也适用于 Sanctuary。


推荐阅读