另一种选择是
chain(createList, assoc('list'))
您可以在拉姆达 REPL.
Update
为了进一步解释其工作原理,我将使用与下一个版本的 Ramda 一起使用的变体:
chain(assoc('list'), createList)
显示它如何匹配当前签名:
chain :: Chain m => (a -> m b) -> m a -> m b
Ramda 将函数视为梦幻之地 Monads,因此也作为Chains。因此,为了将上述内容专门化为函数,我们有
chain :: (a -> Function x b) -> Function x a -> Function x -> b
but Function x y
可以更简单地写为x -> y
,所以上面可以更简单地写为
chain :: (a -> x -> b) -> (x -> a) -> (x -> b)
然后您可以使用这些(专用)类型:
createList :: OriginalData -> YourList (x -> a)
assoc :: String -> YourList -> OriginalData -> EnhancedData
assoc('list') :: YourList -> OriginalData -> EnhancedData (a -> x -> b)
因此
chain(assoc('list'), createList) :: OriginalData -> EnhancedData (x -> b)