映射包含在Maybe中的数组

时间:2017-06-29 09:55:56

标签: javascript monads ramda.js ramda-fantasy

如何映射包含在Maybe或任何其他Monad中的数组?现在我正在使用

const map2 = curry(
  (fn, xs) => map(map(fn))(xs)
)
const data = [1, 2]
pipe(
  Maybe, 
  map2(add(1))
)(data)

1 个答案:

答案 0 :(得分:0)

很难知道,因为不清楚为什么需要将数组包装在一个也许中。是可能不存在的数组还是数组中的值?因为您要映射到数组,所以似乎数组中的值可能不存在,在这种情况下,您确实需要一个mays数组。

基本上,您的解决方案是两次映射的正确方法,但是在使用adts时很少需要这样做。

我立即想到的一件事是用一个空数组的默认值折叠可能的列表,然后正常地将其映射。收获是,当您发现自己需要两次绘制地图时,可能应该尝试重新制定方法。