[Javascript] Functor law】的更多相关文章

Functor laws: 1. Identity: map(id) == id 2. Composition: compose(map(f), map(g)) == map(compose(f,g)) compose( map(toUpper), map(reverse), toArray )("bingo"); compose( map( compose(toUpper reverse), toArray ) )("bingo") Natural Transfo…
Well, this stuff will be a little bit strange if you deal with it first time. Container Object: Just a wrapper / contianer for values No Method No Nouns var _Container = function(val){ this.val = val; } var Container = function(x){ return new _Contai…
原文地址:Haskell学习-functor 什么是Functor functor 就是可以执行map操作的对象,functor就像是附加了语义的表达式,可以用盒子进行比喻.functor 的定义可以这样理解:给出a映射到b的函数和装了a的盒子,结果会返回装了b的盒子.fmap 可以看作是一个接受一个function 和一个 functor 的函数,它把function 应用到 functor 的每一个元素(映射). -- Functor的定义 class Functor f where fma…
介绍monads有点像互联网时代的家庭手工业.我想 “为什么要反对传统?”,但这篇文章将以Scala对待monads的方式来描述. 有个古老的寓言,讲述了几个瞎子第一次摸到大象.一个抱着大象的腿说:“它是一棵树”:另一个摸着大象的鼻子则说:“它是一条大蛇”:第三个则说:“它是一把扇子”... 从这个寓言我们可以得到个结论:古人相信视觉障碍者喜欢调戏大型哺乳动物(此句英文原意可能带有其它含义).幸运的是我们生活在一个更开明的时代.我们也应该了解自己的局限,防止它阻碍我们把握事物的全貌,在某些方面,…
前言 JavaScript是一门多范式语言,即可使用OOP(面向对象),也可以使用FP(函数式),由于笔者最近在学习React相关的技术栈,想进一步深入了解其思想,所以学习了一些FP相关的知识点,本文纯属个人的读书笔记,如果有错误,望轻喷且提点. 什么是函数式编程 函数式编程(英语:functional programming)或称函数程序设计.泛函编程,是一种编程范式,它将计算机运算视为函数运算,并且避免使用程序状态以及易变对象.即对过程进行抽象,将数据以输入输出流的方式封装进过程内部,从而也…
https://wiki.haskell.org/wikiupload/8/85/TMR-Issue13.pdf By Brent Yorgey, byorgey@gmail.com Originally published 12 March 2009 in issue 13 of the Monad.Reader. Ported to the Haskell wiki in November 2011 by Geheimdienst. This is now the official vers…
转载请注明出处: http://hai.li/2017/03/27/prom... 背景 上篇文章 函数式JS: 一种continuation monad推导 得到了一个类似promise的链式调用,引发了这样的思考:难道promise是monad?如果是的话又是怎样的monad呢?来来来,哥哥带你推倒,哦,不,是推导一下! Monad Monad是haskell里很重要的概念,作为一种类型,有着固定的操作方法,简单的可以类比面向对象的接口. 定义 unit :: a -> Monad a fl…
In normal Javascript, we do undefine check or null check: , name: "Suvi"}; var name = person.name ? person.name: null; Sometime backend data return may contain or not contain 'name' prop. So let's see how to define a Maybe() functor: var _Maybe.…
EventStream: You can use RxJS, BaconJS or any reactive programming lib you want: var id_s = map(function(e) { return '#'+e.id }, Bacon.fromEventTarget(document, "click")) var element_s = map(document.querySelector, id_s) //=> EventStream(Elem…
IO functor doesn't like Maybe(), Either() functors. Instead of get a value, it takes a function. API: .toIO() // conver a function to IO IO() // The same a to toIO; but this is a just static method runIO //IO is lazy, just like Observable, if you don…