2

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

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

1 回答 1

0

很难知道,因为不清楚为什么需要将数组包装成可能。是可能不存在的数组还是数组中的值?因为您想在数组上进行映射,所以数组中的值似乎可能不存在,在这种情况下,您真的想要一个可能的数组。

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

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

于 2019-07-12T01:07:30.703 回答