- Standard ML
- OCaml
- Haskell
- autre
Répondre
Il est similaire à la puissance de son système de type statique à Haskell, bien que son inférence de type est sérieusement entravée par la nécessité de soutenir le sous-typage OO-style. Scala également lacks higher-rank polymorphism et impredicativity, dont Haskell a. D'un autre côté, le mécanisme type class basé sur implicits de Scala, bien que plus bavard que Haskell, est plus flexible.
Il existe de nombreux axes sur lesquels comparer, bien sûr; La sémantique d'évaluation de Scala est strict, comme celle de ML, alors que Haskell est lazy.
Scala a polymorphisme rang supérieur ... –
Wright @ Kevin: il ne prend pas en charge directe pour elle. Voir ici: http://apocalisp.wordpress.com/2010/07/02/higher-rank-polymorphism-in-scala/ –
Vous pouvez passer un constructeur de type comme paramètre, c'est de rang supérieur * par définition *. Si par "direct" vous voulez dire "avec exactement la même syntaxe que Haskell" alors on peut argumenter qu'il y a un ** lot ** de choses qui ne sont pas "directement" supportées par Scala. –
deux en fonction et mis dans la façon dont il est utilisé, Haskell est probablement plus proche de cette liste, bien que la bibliothèque acteurs montre un fort héritage Erlang.
Quelque chose comme ceci: http://dibblego.wordpress.com/2007/05/23/the-power-of-type-classes-with-scala-implicit-defs/ donne une bonne idée de l'endroit où Haskell et Scala sont équivalents
« Du point de vue de la programmation fonctionnelle » == « En laissant de côté la partie OO »? Sinon, la partie OO exclurait SML, Haskell et tous les autres langages fonctionnels sans OO, laissant (afaik) seulement OCaml et Common Lisp, auquel cas la réponse doit être OCaml. – delnan
Oui, sans prendre en compte la partie OO. –