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

zzz6519003 · 2019年03月29日 · 最后由 jiyuhang110 回复于 2019年04月11日 · 994 次阅读
共收到 12 条回复
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 写各种各样的代码,直到它开始要求添加静态类型

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