论坛首页 编程语言技术论坛

Monads in Ruby

浏览 3345 次
锁定老帖子 主题:Monads in Ruby
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-12-10  
在看Monad,发现了这个,应该不错。可惜我不懂ruby!

http://moonbase.rydia.net/mental/writings/programming/monads-in-ruby/00introduction.html
   发表时间:2006-12-10  
缺少Haskell这样华丽的类型系统。Monad就缺少了静态的确保啦。Monad本身就是一个type constructor。说白一点就是泛型。那Ruby都没有静态类型系统。人家就不知道你一个函数是返回一个monad还是返回一个普通的值。调用你是直接调用还是要用bind。
0 请登录后投票
   发表时间:2006-12-11  
少了静态类型倒也罢了。haskell的类型系统确实安全,但是程序员却容易被古怪的类型错误困扰,不知所错。还不如用动态类型,一跟踪调试就知道了。

ruby应用monad最大的问题是缺乏do notation。bind套bind,closure套closure很容易让人晕菜。ruby号称善于dsl,但是就是这个do notation的语法就模仿不出来。

具体应用monad到某一个领域倒是可以的。比如俺的rparsec。只要不要去搞monadic combinator这种高难度冲浪就好了。
0 请登录后投票
   发表时间:2006-12-11  
monad还是需要像haskell那样优雅的语言来支撑
况且ruby本来就是命令式的
又不非得靠这东西保证命令执行顺序
0 请登录后投票
   发表时间: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的,手工串联总是很难看。另外我偶然看见这个帖子里的简化,虽然还是没明白他是怎么做的,找不到源码。
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics