2010-11-15 12 views
0
  1. Standard ML
  2. OCaml
  3. Haskell
  4. autre
+1

« 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

+0

Oui, sans prendre en compte la partie OO. –

Répondre

6

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.

+1

Scala a polymorphisme rang supérieur ... –

+2

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/ –

+1

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. –