博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Functional Programming] liftA2 and converge
阅读量:4983 次
发布时间:2019-06-12

本文共 1240 字,大约阅读时间需要 4 分钟。

Sometimes I am confused with 'liftA2' and 'converge' functions. 

 

Main difference between those is that:

  liftA2 takes applicative functor as second and third arguements, for example, array

  converge takes functions as second and third arguements

// liftA2 :: Applicative m => (a -> b -> c) -> m a -> m b -> m c// converge :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d

 

// liftA2 :: Applicative m => (a -> b -> c) -> m a -> m b -> m c// converge :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> dconst { option, curry, liftA2, converge } = require("crocks");const { getState } = require("../../helper");// getColors :: () -> State AppState [String]const getColors = () => getState("colors").map(option([]));// getShapes :: () -> State AppState [String]const getShapes = () => getState("shapes").map(option([]));// buildCard :: String -> String -> Cardconst buildCard = curry((color, shape) => ({  id: `${color}-${shape}`,  color,  shape}));// buildCards :: [String] -> [String] -> [Card]const buildCards = liftA2(buildCard);// generateCards :: () -> State AppState [ Card ]const generateCards = converge(liftA2(buildCards), getColors, getShapes);module.exports = {  generateCards};

 

转载于:https://www.cnblogs.com/Answer1215/p/11308513.html

你可能感兴趣的文章
好久没有写东西了发一个1年前写的东西
查看>>
Struts2、Spring、Hibernate 高效开发的最佳实践(转载)
查看>>
使用cmd查看电脑连接过的wifi密码并将密码发送至指定邮箱(三)
查看>>
u3d 场景资源打包
查看>>
123
查看>>
hdu 1874
查看>>
最优比例生成树最优比率生成树 01分数规划问题
查看>>
ARM函数调用过程分析
查看>>
css样式重置方案 -解决浏览器差异
查看>>
distpicker使用记录
查看>>
[BZOJ3282]Tree(LCT)
查看>>
最终版详细设计
查看>>
GenePix Pro 3.0
查看>>
html移动端 -- meta-模板 + rem
查看>>
js-控制浏览器和移动端的后退按钮 . popstate
查看>>
[QT][SQLITE]学习记录二 日期查询
查看>>
hdu 4455 Substrings
查看>>
web传参
查看>>
Python 查找binlog文件
查看>>
Git——如何将本地项目提交至远程仓库
查看>>