最近开始学习Haskell了,同样是函数式语言,当然少不了对比。因为Haskell还没有完全学完,所以表达可能有点不太完善,不过现在已经完全想走向haskell了。

这里博主打个不太好的比方,

如果scheme是C语言,那么Racket是JAVA或C#,common-lisp则是Objective-C。而Haskell是C++

Haskell是一个纯函数式语言。不同于CL的多范式。它在函数上进行了一步步抽象,比如类型类,比如函子,比如单子。一切都是函数,一切都是数学,一切都是概念,一切都是证明。而相比之下,lisp更加倾向与过程式,在函数式之中,加入了面向对象的部分。

Lisp最大的优势,在博主认为是一切都是列表以及宏功能。宏功能是非常非常吸引人的一个部分。

但Haskell更多的不是语法上,而是思想上的升华。它完全可以代表数学。函数就是一个表达式。一组函数,可以用来解一个问题,一类问题的通解,就是这一组函数的抽象。这就是博主对类型类的理解。而在这之上的函子(functor),就是同类问题,在外部又加了一层问题来进行包装,进行推导来得出的通解。

Haskell完全可以理解为一个纯理性,纯数学的世界。