Ruby中实现Monadic组合子

Why不愧是一代Ruby大牛,连monadic combinator这个Haskell最著名的概念之一也能极简单地用Ruby复制出来:http://redhanded.hobix.com/inspect/hoppingThroughPipesAndClosures.html

突然感觉和java社团搞模式框架相比,ruby社团更津津乐道于这样的“奇巧淫技”,也许这正是文化差异和乐趣所在。

update: 前阵子被人推荐去学J语言,一种发源于古老的APL的面向数组/向量语言,适合数据分析。特点是简洁得过分,充满了one liner/line noise。虽然还是感觉非常难理解,不过确实有不少闪光的设计思想。它把函数称为动词,数据称为名词。动词是类似操作符一样的形式,所以分为monad和dyad两种,monad是单边的,dyad是双边的,不理解的就当是运算符过载好了。这些都还能用别的语言模拟,就是没J那么简洁罢了。最神奇的还有一种叫副词,副词的作用是修饰动词!(不像decorator模式那样是修饰对象/名词)。比如+是加运算,/副词起间隔作用,所以+/合起来就变成了累加运算: +/ 1 2 3 => 1 + 2 + 3,\的作用是tracing,+/\就是tracing summary:+/\ 1 2 3 => 1, 1 +2, 1+2+3 => 1 3 6。J虽然不是完全的functional语言,但是其编程风格就是不断组合各种动词副词最后得出一个复杂的运算动词,再整体运用到一个名词上去。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值