Значительные различия между F # и Clojure - PullRequest
27 голосов
/ 27 мая 2009

Каковы наиболее значимые различия между F # и Clojure?

Какие конструкции имеют F #, а Clojure - нет, и наоборот?

Есть ли у F # макросы?

Ответы [ 7 ]

57 голосов
/ 27 мая 2009

Большинство различий будет связано с тем, что F # происходит от ML , а clojure - от lisp .

Таким образом, F # имеет больше ощущений ML / OCaml / Haskell с акцентом на:

  • статическая типизация
  • вывод типа
  • сопоставление с образцом

В то время как у clojure больше похоже на Lisp с акцентом на:

  • S-выражения
  • макросы
  • закрытие

Также, как отметил Брайан, F # - это язык .Net, а clojure - это язык JVM, поэтому у каждого будет доступ к обширному, но разному набору библиотек.

8 голосов
/ 03 июня 2009

Clojure - это семейный язык LISP-1. F # является практичным OCaml, принятым для платформы .net.

6 голосов
/ 22 декабря 2009

Похоже, что для запуска Clojure на CLR прилагаются определенные усилия. Выглядит очень многообещающе.

http://github.com/richhickey/clojure-clr

6 голосов
/ 27 мая 2009

Одно ключевое отличие состоит в том, что F # является языком .NET, тогда как Clojure работает на JVM. Таким образом, развертывания и поддерживаемые платформы будут отличаться.

Обратите внимание, что F # поддерживается только в режиме моно.

Что касается макросов, я думаю вам не повезло .

3 голосов
/ 01 мая 2014

Они оба функциональные сначала языки программирования, но их системы типов очень разные. F # является строго типизированным языком, а Clojure - динамически типизированным языком, поэтому

  1. Ответ Боумбла на вопрос: «В чем разница между сильным и сильным против 1006?» Статическая типизация И Слабый или Динамический Typing ;
  2. ответ хейлема на Динамически против статически типизированных языков исследования ; или
  3. Вопрос Джои Адамса Что лучше для прототипирования: статически типизированный язык или динамически типизированный один

может помочь ответить «каковы наиболее существенные различия между F # и Clojure?». Однако обратите внимание, что дебаты между «статической типизацией» и «динамической типизацией» носят длительный характер и поэтому могут показаться религиозными.

2 голосов
/ 28 мая 2009

Если вам нужны макросы, вы можете использовать их с Boo или Nemerle .

2 голосов
/ 27 мая 2009

F # действительно соответствует Scala на JVM. Наиболее близкая вещь к Clojure на платформе .NET - IronScheme.

...