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语言,但是其编程风格就是不断组合各种动词副词最后得出一个复杂的运算动词,再整体运用到一个名词上去。

你可能感兴趣的:(Ruby)