浏览 3338 次
锁定老帖子 主题:Monads in Ruby
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-10
http://moonbase.rydia.net/mental/writings/programming/monads-in-ruby/00introduction.html 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-10
缺少Haskell这样华丽的类型系统。Monad就缺少了静态的确保啦。Monad本身就是一个type constructor。说白一点就是泛型。那Ruby都没有静态类型系统。人家就不知道你一个函数是返回一个monad还是返回一个普通的值。调用你是直接调用还是要用bind。
|
|
返回顶楼 | |
发表时间:2006-12-11
少了静态类型倒也罢了。haskell的类型系统确实安全,但是程序员却容易被古怪的类型错误困扰,不知所错。还不如用动态类型,一跟踪调试就知道了。
ruby应用monad最大的问题是缺乏do notation。bind套bind,closure套closure很容易让人晕菜。ruby号称善于dsl,但是就是这个do notation的语法就模仿不出来。 具体应用monad到某一个领域倒是可以的。比如俺的rparsec。只要不要去搞monadic combinator这种高难度冲浪就好了。 |
|
返回顶楼 | |
发表时间:2006-12-11
monad还是需要像haskell那样优雅的语言来支撑
况且ruby本来就是命令式的 又不非得靠这东西保证命令执行顺序 |
|
返回顶楼 | |
发表时间:2006-12-11
ajoo 写道 少了静态类型倒也罢了。haskell的类型系统确实安全,但是程序员却容易被古怪的类型错误困扰,不知所错。还不如用动态类型,一跟踪调试就知道了。
ruby应用monad最大的问题是缺乏do notation。bind套bind,closure套closure很容易让人晕菜。ruby号称善于dsl,但是就是这个do notation的语法就模仿不出来。 具体应用monad到某一个领域倒是可以的。比如俺的rparsec。只要不要去搞monadic combinator这种高难度冲浪就好了。 Ruby的DSL毕竟是寄生型的,受宿主语言局限。对do notation,虽然ruby是strict的,手工串联总是很难看。另外我偶然看见这个帖子里的简化,虽然还是没明白他是怎么做的,找不到源码。 |
|
返回顶楼 | |