其他 求解读 contracts.ruby ...

jiyinyiyong · 2012年07月03日 · 最后由 jiyinyiyong 回复于 2012年07月03日 · 2284 次阅读

有 Haskell 入门左右的经验,Contracts 概念其实很眼熟的, 今天在 Twitter 上看到了这条推:

Scheme 果然是语言设计爱好者的天堂。Typed Racket 启发了 Contracts.coffee,后者又启发了 Contracts.ruby。再加上 Erlang 的 spec 语法,在编译时/运行时加入类型契约的动态语言越来越多了。 https://twitter.com/liancheng/status/219825359149993987

contracts.coffee 作为 coffee 党早眼熟了 http://disnetdev.com/contracts.coffee/ 接着找到了对应的 contracts.ruby http://egonschiele.github.com/contracts.ruby/ 静态语言在定义函数的时候声明类型很常见的呀, contracts 的类型和他们怎么区别开的?

代码..

Contract ArrayOf[Num], Func[Num => Num] => ArrayOf[Num]
def map(arr, func)
  ret = []
  arr.each do |x|
    ret << func[x]
  end
  ret
end

何必.... 感觉好复杂。特别是那个 contracts.coffee。

还是没看懂干嘛用的...求解释

这个没有必要吧 有 画蛇添足 之感

定义方法时引入类型检查,做粒度更精细的测试。但是感觉得不偿失啊,有各种测试方法,为什么非要在喜欢 duck typing 的动态语言里引入这些呢...直接用静态语言就好了。

对啊问题.. 明明是 Haskell 里的类型系统,怎么就被移植到动态语言里面来了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号