瞎扯淡 有法子加入类型系统么

zzz6519003 · 2019年03月29日 · 最后由 jiyuhang110 回复于 2019年04月11日 · 2093 次阅读
1 楼 已删除

如果你是说 Ruby 的话:

  1. Dry.rb 已经有类似的工作了,当然是靠元编程实现的,一定程度上对某些对象的类型约束
  2. 社区 Issue #9999 关于类型标注有很长的讨论,去年的 GSoC 有个哥们做了下,不过也就是加了类型标注,看了下没做完
  3. 参考下隔壁 Python 社区怎么样了

换用其他语言来写(

python 有 type hinting https://docs.python.org/3/library/typing.html ,静态检查类型,虽然有点弱,但聊胜于无。ruby 我觉得是看不到了

关于此 Matz 的最后一次表态说是要自动类型推断,在 Ruby 的项目管理的某个 issue 里,具体忘了是哪个,之前 Google 过这个问题。

说出来你可能不信,你甚至可以用 Ruby 写 Haskell like 的语法 没错,上面的代码都是可以运行的,当然实现方式就是大家喜闻乐见的元编程了,CodeWars 有这题 (https://www.codewars.com/kata/59a8dda8dbe3b0b6f700008d),欢迎大家踊跃尝试(

misakamikoto 回复

hhh 很有趣,我是第五个过的,其实 show 的求值时机有点迷幻,因为测试用例里用的是 equals,这样的话我只能暴力遇到 show 就求值了,本来应该 main 触发求值的?

mizuhashi 回复

严格来讲的话遇到 main 触发求值但是也不应该返回一个值,而是要将字符串打印出来,这样讲的话,让 show 返回一个 IO Monad,然后写一个 runIO :: IO () -> String 来测试可能更合适一些……顺便,您通过了这道题,麻烦打个分,让这题早日摆脱 beta 状态

misakamikoto 回复

打了个 2kyu 应该差不多,我看到兰兰是把 main 做为一个分界,在之前的 show 和之后的 show 有不同的行为,其实也挺有意思的,当然这个测起来就更难了(

Matz 在去年郑州的 Ruby Summit 上分享过,他说他永远不会在 Ruby 中添加类型,假如添加了,他肯定会后悔😂

我会一直使用 Ruby 写各种各样的代码,直到它开始要求添加静态类型

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