javascript 也许Monad在Javascript中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 也许Monad在Javascript中相关的知识,希望对你有一定的参考价值。
// Naive definition
const Some = (v) => ({
val: v,
map (f) {
return Some(f(this.val))
},
chain (f) {
return f(this.val)
}
})
const None = () => ({
map (f) {
return this
},
chain (f) {
return this
}
})
// maybeProp :: (String, {a}) -> Option a
const maybeProp = (key, obj) => typeof obj[key] === 'undefined' ? None() : Some(obj[key]);
// getItem :: Cart -> Option CartItem
const getItem = (cart) => maybeProp('item', cart)
// getPrice :: Item -> Option Number
const getPrice = (item) => maybeProp('price', item)
// getNestedPrice :: cart -> Option a
const getNestedPrice = (cart) => getItem(cart).chain(getPrice)
getNestedPrice({}) // None()
getNestedPrice({item: {foo: 1}}) // None()
getNestedPrice({item: {price: 9.99}}) // Some(9.99)
以上是关于javascript 也许Monad在Javascript中的主要内容,如果未能解决你的问题,请参考以下文章
从 Haskell 到 JavaScript 的翻译,我读过的最好的 Monad 介绍的部分内容
使用JavaScript调用手机平台上的原生API
如何为continuation monad实现stack-safe chainRec操作符?
如何正确使用 Javascript 来定位 Shiny 中的 gt 表行元素
javasc面向对象编程
Monad的重点