2010-11-15 1 views
0
  1. Standard ML
  2. OCaml
  3. Haskell
  4. некоторые другие
+1

«С функциональной точки зрения программирования» == «Оставляя в стороне ОО часть»? Потому что, напротив, часть OO исключает SML, Haskell и все другие функциональные языки без OO, оставляя (afaik) только OCaml и Common Lisp, и в этом случае ответ должен быть OCaml. – delnan

+0

Да, без учета части OO. –

ответ

6

Он подобен в силе своей статической системы типа на Haskell, хотя его тип логического вывода сильно затрудняется необходимостью поддержка подтипов стиля OO. Scala также lacks higher-rank polymorphism и impredicativity, оба из которых Haskell имеет. С другой стороны, механизм Scala, основанный на имплицитах type class, хотя и более подробный, чем Haskell, более гибкий.

Существует много осей, на которые можно сравнить, конечно; Оценочная семантика Scala - strict, как и у ML, тогда как Haskell - lazy.

+1

Scala имеет более высокий рейтинг полиморфизма ... –

+2

@Kevin Wright: у него нет прямой поддержки. См. Здесь: http://apocalisp.wordpress.com/2010/07/02/higher-rank-polymorphism-in-scala/ –

+1

Вы можете передать конструктор типа в качестве параметра, это более высокий ранг * по определению *. Если под «прямым» вы подразумеваете «с точно таким же синтаксисом, как Haskell», то можно утверждать, что существует ** много вещей, которые не «напрямую» поддерживаются Scala. –

3

Как в наборе функций, так и в том, как он используется, Haskell, вероятно, ближе всего к этому списку, хотя библиотека актеров показывает сильное наследие Эрланга.

Что-то вроде этого: http://dibblego.wordpress.com/2007/05/23/the-power-of-type-classes-with-scala-implicit-defs/ дает хорошее представление о том, где Haskell и Scala эквивалентны

 Смежные вопросы

  • Нет связанных вопросов^_^