Clojure-ウィキペディア、無料​​百科事典

before-content-x4

Rich Hickey -Clojure Language Creator

Atomエディターで作成された簡単なプログラムの例

Clojure /’klo’suʒə/ [2] ) – リッチヒッキーによって開発された最新のリスププログラミング言語方言。これは一般的な目的の言語であり、実行中のプログラムの変更をサポートし、機能的および共同作成プログラミングを促進します。

after-content-x4

Clojureは、データ構造の不変性を、共同作成プログラミングを促進する重要な手法として強調しています。仮想Javaマシンで動作します。インタープリターによって起動したり、バイトコード用にコンパイルされたりできます。アプレット、アプリケーション、またはサーブレットを作成できます。これにより、Clojureで完全にインターネットアプリケーションを作成できます。言語全体は1つのJARファイルにあります。 Lispiで知られている広範なマクロシステムがあるため、新しい構造で舌を広げることができます。スキームのような関数と変数のための1つの名前スペースがあります。 Java言語と完全に統合されており、JavaのClojureコードとClojureのJavaコードを実行できます。

名前 Clojure 言葉から来ています 閉鎖 (閉鎖)、これはLISP言語の重要な要素であり、文字sはJに変換され、Javaを示しています。著者は、参照する名前を作成したかった c #、 l ISPA i j から [2] そして、それが彼が彼のプログラミング言語の名前のためにこの言葉を選んだ理由です。

  • JVMバイトコード(英語 Java仮想マシン 、仮想Javaマシン);
  • Javaとの完全な互換性:Clojureは、ネイティブにJavaメソッドを引き起こし、その逆も同様です。
  • REPLで働く可能性。 読み取り– Eval – Printループ 、ループロード-Wykonaj -wypisz);
  • 再帰に重点を置いた閉鎖。
  • 恒久的なデータ構造の豊富なライブラリ。
  • トランザクションメモリの形でのCO -Depositの強力なサポート(英語 ソフトウェアトランザクションメモリ – stm) [3] およびエージェントシステム。
  • 他の言語と比較した簡潔なコード [4]

レプリングレプリメント [ 編集 | コードを編集します ]

Java -cp clojure.jar clojure.main 

テキストを書く [ 編集 | コードを編集します ]

グローバル変数の定義 [ 編集 | コードを編集します ]

グローバル変数は、VARオブジェクトへのシンボルマッピングの名前の名前と呼ばれるマップに配置されます。後者は、メモリに配置された値への参照を保存する参照タイプ(例:数字、テキストチェーン、機能的オブジェクト、またはその他の計算)です。グローバル変数は、名前をめったに変えないか、まったく変更しない方法であり、時間の経過とともに異なる値を表すオブジェクトの抽象的な状態(関数、構成要素、定数値)を変更する方法です。

建設のおかげです def VAR施設を介して、値とシンボルのグローバルな接続を作成できます。

after-content-x4
def 結果  + 2  * 4  5 ))))  

関数定義 [ 編集 | コードを編集します ]

しっかりと機能します(他のLISP方言のように、変数の名前、つまりシンボルは任意の文字で構成されます)。

月桂樹  [ バツ ]  もしも = バツ  0 ))  初め  * バツ    -  バツ  初め )))))  

匿名関数 [ 編集 | コードを編集します ]

匿名関数または名前のない関数では、以下の式全体を別の関数の引数として伝えることができます(したがって、このような関数は高次関数になります)。

より高いオーダー関数 [ 編集 | コードを編集します ]

したがって、他の関数を引数または返品機能として取得する関数。

月桂樹 f  [ バツ ]  * 2  / 3  4 ))))  地図 f  ' 3  4  5  6  7  8 )))  

または匿名関数を使用して同じもの:

地図 fn [ バツ ]  * 2  / 3  4 ))))  ' 3  4  5  6  7  8 )))  

匿名関数を返す関数

上記の関数は匿名関数を返し、この最初の関数への引数として送信された変数を返します、それはSO -Calledです語彙閉鎖。

マクロ [ 編集 | コードを編集します ]

マクロは、他の方言と同様に、機能の場合のように、完全にリストとして、変換された式を事前の計算なしに処理します。マクロの下 定義 スキームのように関数を定義するために使用されます。

defmacro 定義  [ パラメージ   ]  `` 月桂樹 初め パラメージ ))  [ 〜@ 休み パラメージ )]]  〜@ )))  定義  f  バツ ))  * バツ  バツ )))  f  ))  

他の方言とは異なり、引用内のフレーズを計算する 準引用 コンマの代わりに、Tyldaのサインが使用されます。

新しいJava施設の作成 [ 編集 | コードを編集します ]

新しい Java.lang.String  "こんにちは世界!" ))  

オブジェクトメソッドを呼び出します [ 編集 | コードを編集します ]

月桂樹 アッパー  [ s ]  .touppercase  s )))  アッパー  新しい Java.lang.String  「フーバー」 )))  

静的メソッドを呼び出します [ 編集 | コードを編集します ]

関数 string-> integer スキーム言語に表示されます。

月桂樹 string-> integer  ([[[ str ]  整数/parseint  str )))  ([[[ str ベース ]  整数/parseint  str ベース ))))  

GUI [ 編集 | コードを編集します ]

スイングライブラリを使用します。

javax.swing.joptionpane/showmessagedialog  nil  "こんにちは世界!" ))  
  1. リッチヒッキー: Clojureの最初の年 。 2008-10-16。 [アクセス2016-02-20]。 ))
  2. a b リッチヒッキー: 意味と発音 Clojure 。 2009-01-05。 [アクセス2016-02-20]。 ))
  3. Bedra I Halloway 2013↓ 、p。32、引用:「STMは、ワットのために安全なコードを作成するために使用され、Javaロックよりも高いレベルのソリューションです。エラーの影響を受けやすいデータロック戦略を適用する代わりに、トランザクションを使用して共有条件を保護できます。多くのプログラマーは、データベースの使用の経験があるため、トランザクションをよく知っているため、これははるかに優れたアプローチです。」
  4. Bedra I Halloway 2013↓ 、p。26、Quote:「Clojureバージョンに分岐がないため、コードはより読みやすく、テストが簡単です。これらの利点は、より大きなプログラムでさらに明確です。さらに、コードは簡潔ですが、簡単に理解できます。」

after-content-x4