使用Scala无法模拟Haskell中的哪些功能?

目前我正在学习
Scala和Haskell.

我想知道Haskell在某种程度上是否比Scala(ScalaZ)更强大?
我知道例如Haskell的代数数据类型,TypeClasses,currying,laziness等可以在Scala中实现.

是否有一些Haskell程序无法轻松映射到Scala?如果是,Scala中缺少什么功能可以阻止此映射?

我的直觉是Scala至少和Haskell一样强大,我只是不确定这种直觉是否正确.有人能证实吗?

编辑:
我看到了亚伯拉罕森的观点.仿真的定义确实至关重要.我将从实际的角度定义仿真,给定一个知道Haskell和Scala的程序员可以将1-2行Haskell代码转换为1-2小时内的等效Scala代码.现在是问题,什么是等价的?这意味着,将Haskell代码中的逻辑结构转换为Scala中的等效逻辑结构,例如Haskell中的Type Classes转换为使用implicit实现的等效结构.

编辑2:
回应Travis的评论:为简单起见,我们只考虑vanilla Haskell.

编辑3:

This问题类似.

最佳答案 尽管Scala具有类型推断,但它比Haskell更弱,因为Haskell使用了(a的扩展)
Hindley-Milner type system,这允许特别强大的推理. Scala的类型系统允许更广泛的类型概念(例如,它也是面向对象的),这意味着Haskell使用的类型推断算法不起作用. (另外,实际上,Scala的类型推断比它更弱,以便在编译器和编译器编写器上更容易.)

点赞