在Javascript中应用函数列表可能值

时间:2016-12-15 17:22:33

标签: javascript functional-programming ramda.js ramda-fantasy

我正在使用ramda-fantasy作为monads。我在一个可能的函数和一些函数中有一个字符串,它将对字符串执行正则表达式匹配并返回Maybe String

如何映射may以应用所有函数并连接结果?

我有

const fieldRetrievers = [ 
  getAddress,
  getName,
  getPhone, 
]

const text = Maybe.of("a text")

// I want to define
// List (String -> Maybe String) -> Maybe String -> Maybe String
function getInfo(retrievers, maybeText) {...}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你正在寻找composeK,关于monadic结构的功能构成(" kleisli箭头")。

基本上,你的结果函数应该在输入上重复chain

-v

您可以使用reduce对您的函数数组实现:

text.chain(getAddress).chain(getName).chain(getPhone)

所以你要写

R.reduce((m, f) => m.chain(f), text, fieldRetrievers)