我开始学习Haskell。我对此很陌生,我只是在阅读一些在线书籍,以了解其基本结构。
熟悉它的人经常谈论的“模因”之一就是整个“如果它可以编译,它将可以工作*”的东西-我认为这与类型系统的强度有关。
我试图理解为什么Haskell在这方面到底比其他静态类型的语言要好。
换句话说,我假设在Java中,您可以做一些令人讨厌的ArrayList<String>()
事情,例如埋葬,
以包含确实应该包含的内容ArrayList<Animal>()
。这里令人讨厌的事情是您的string
contains elephant, giraffe
等,如果有人放进去,Mercedes
您的编译器将无法为您提供帮助。
如果这样做了,ArrayList<Animal>()
那么在以后的某个时间点,如果我确定我的程序不是真正的关于动物的,而是关于车辆的,那么我可以更改,例如产生ArrayList<Animal>
生产的功能,ArrayList<Vehicle>
而我的IDE应该告诉我那里的所有地方是一个编译中断。
我的假设是,这就是人们所说的强类型系统的含义,但是对我而言,为什么Haskell的更好才是显而易见的。换句话说,您可以编写好的Java或坏的Java,我假设您可以在Haskell中执行相同的操作(即,将东西填入字符串/整数中,它们实际上应该是一流的数据类型)。
我怀疑我缺少重要/基本的东西。
我很高兴能向我展示我的方式的错误!
Maybe
都只在最后提到。如果我只选择一件事,那就是更多流行的语言应该从Haskell借用。这是一个非常简单的想法(从理论上讲不是很有趣),但是仅此一项就可以使我们的工作变得如此轻松。