1. ホーム
  2. clojure

[解決済み] Clojure、Scheme/Racket、Common Lispの違いは何ですか?

2022-06-23 05:31:58

質問

lispという同じ系列の言語の方言であることは知っていますが、具体的にどのような違いがあるのでしょうか。可能であれば、構文、特徴、機能、リソースなどのトピックを網羅した概要を教えていただけないでしょうか。

どのように解決するのですか?

共通点が多いですね。

  • 動的な言語
  • 強い型付け
  • コンパイル済み
  • Lispスタイルの構文、つまりコードはLispのデータ構造(フォーム)として書かれ、最も一般的なパターンは次のような関数呼び出しです。 (function-name arg1 arg2)
  • コードをデータとして扱い、実行時に任意のコードを生成できる強力なマクロ システム (新しい構文で言語を拡張したり、DSL を作成したりするためによく使用されます)
  • 他のパラダイムに対応する能力を持つが、多くの場合、関数型プログラミングスタイルで使用される
  • REPLによるインタラクティブな開発に重点を置いている (つまり、コードの実行中のインスタンスでインタラクティブに開発する)

Common Lispの特徴的な機能。

Clojureの特徴的な機能。

  • あらゆるJavaライブラリを直接利用できるため、最大のライブラリ・エコシステム
  • ベクター [] とマップ {} に加えて、標準的に使用されるリスト () - は、ベクトルやマップの一般的な有用性に加えて、一般的に読みやすくするための革新的な技術であると考える人もいます。
  • Haskell に多少影響を受けた、不変性と遅延のある関数型プログラミングがより強調されています。
  • 言語レベルでのソフトウェアトランザクションメモリによってサポートされる強力な並行処理能力 (一見の価値あり。 http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey )

スキームの特徴

  • 最もシンプルで学習しやすいLispと言えるでしょう
  • Hygienic macros ( http://en.wikipedia.org/wiki/Hygienic_macro ) - マクロ展開における偶発的なシンボル捕捉の問題をエレガントに回避します。