Clojure Documentation Welcome to the community-driven documentation site for the Clojure programming language. Get Started! » See all content » Contribute »
Clojure Documentation Welcome to the community-driven documentation site for the Clojure programming language. Get Started! » See all content » Contribute »
Introduction The goal of this article is to provide a fairly comprehensive introduction to the Clojure programming language. A large number of features are covered, each in a fairly brief manner. Feel free to skip around to the sections of most interest. Please send feedback on errors and ways to improve explanations to mark@objectcomputing.com, or fork the repository and send a pull-request. I'm
私は新たな言語を学ぶのが好きなのですが、しばらく使うとどうしてもその言語の魅力は色あせてきてしまいます。そして結局は、ツールボックスの中のありふれた言語の1つになってしまうのです。 しかしClojureは例外でした。私は今でも、最初に学んだ時と変わらずこの言語を使うのが好きです。その理由は、この言語の持つ能力とシンプルさの絶妙なバランスにあります。 能力のバランス 一部の言語はシンプルであっても同時に冗長だったりします。冗長さは大した問題ではないと言う人も、中にはいます。そういう人たちは、全ての言語がチューリング完全であるとか、特定の言語では少し多くコードを書く必要があるだけだとか力説するでしょう。 でもそれは的外れだと思います。原理上何かを表現できるかということが大事なのではありません。解こうとしている問題にどれだけうまく言語を対応づけられるかということです。あなたの問題領域の観点から考
The original document appears at http://clojure.org/rationale. The translation is based on November 27, 2009 version of the page. 読みにくくて申し訳ないです。数多くの間違いがあると思いますので、ご指摘ください。 顧客や出資家は、業界標準のプラットフォームであるJava仮想マシン (Java Virtual Machine; JVM) に相当な投資をしており、そのパフォーマンス、セキュリティ、安定性などに満足している。Java開発者は、動的言語の簡潔さ、柔軟さ、生産性をうらやましく思うものの、顧客の環境で動かせるかどうか、既存のコードやライブラリが使えるかどうか、そして動作速度などについて心配するかもしれない。また、ネイティブ・スレッドやロッキングによる並行処理に
@halcat0x15a が書いた Clojure への不満とか というエントリを読みました. この手の不満は単なる愚痴に終わってしまうことが多いのですが, Haskell/Scala プログラマから見た Clojure という明確な視点があるおかげで, 単なる愚痴を越えてプログラミング言語間の比較をするきっかけになっています. 私も読んでいて,Scala のように Clojure を書きたいと考えたら, 同じことを思ってしまうだろうなと.なるほどと膝を打ってしまいました. ところで, 人が抱く不満というのは百人いれば百通り違うわけで, Haskell/Scala プログラマという背景が変われば不満も変わってくるわけです. 「改善された Java」として Clojure を使っている私が読むと, Scala プログラマの不満も別の意味をもってきます. そこで,このエントリでは,@halca
最近はClojureばかり書いているので、良い所ばかりでなく、気になるところも見えてきました。 なにか意見をもらえるかもしれないので書き並べておきます。 セルフホスティングして欲しい Clojureのソースコードを読むときに、高確率でJavaのコードを読まなければいけないので悲しくなります。 やはり、gen-classとかでは物足りないのかなあ? それとも、セルフホスティングにはあまりヤル気がないのか・・・・ clojure.langのJavaDoc欲しい ソースコード追うのが面倒なので。 Protocolをもっと使って欲しい 自分で新しいデータ型を作った時に、既存の関数を使うためにclojure.langの得体の知れないinterfaceを実装するわけですが、Protocolとして存在すればClojureの中で完結するのでうれしいのだけど、これはデータ型がJavaに依存しすぎてて簡単には
cljsbuildのcrossoversという機能を知らない所為で今まで無駄に苦労してきましたが、これでマクロが使えないという制約から解き放たれました。 万歳!cljsbuild! マクロが使えるようになってまず一番最初にやることは何か? もちろん、モナド内包表記の実現ですね! HaskellのdoよりはScalaのforの方が慣れているのでこちらを採用しました。 動的型付けの言語でのモナドの実現はいくつか見てきましたが、明示的にコンテキストを指定するタイプはあまり好かないので、ClojureらしくProtocolで表現することにしました。 Monadic Protocol 通常モナドはunitとbindが実装され、モナド則 bind f (unit x) == f x bind unit m == m あともう一個なんかあった気がする を満たしますが、動的型付けの言語でunitを実現する
4. STMとは Software Transactional Memory ソフトウェアトランザクショナルメモリは、データベーストラン ザクションに似た並行性制御機構であり、並列計算を行う際の 共有メモリへのアクセス法である。 この機構はロックベースの同期を用いた並行性制御の代替手段と して機能し、ノンブロッキングな方法で実装される物もある。 Wikipediaより 楽観的: 他のスレッドを気にせずとりあえず実行してみる 変なことになったらリトライする 最近盛んに研究されている(らしい) 5. ロックの利点と欠点 利点 いつロックを取得し、解除するかを陽に制御できる 開発者にとって馴染みがある方法 多くのプログラミング言語でサポートされている 欠点 ロックのとる順序によってデッドロックが起こる 優先度逆転が起こる composableでない
Clojure製統計解析アプリ「Incanter」は無料かつjarファイル一つでお手軽に実行できる、その上Javaの豊富なライブラリを利用したり、描画に特化したProcessingという処理系でリッチなアニメーションやインターフェイスを実装できるという面白いアプリケーションです。また、JVM上で動くため、HadoopやLuceneなどにシームレスで適用できますし、GoSenなど形態素解析アプリも簡単に呼び出せるため、自然言語処理やテキストマイニングにも活用できます。一番重要なことは、Clojureであるということ、つまり皆さんの愛するLispでコーディング出来るということです。もう一度言いますが、Lispで統計解析が出来るという喜b(略)。 無料の統計解析アプリというとR(あとアプリではありませんが、Python-Scipy/Numpyなど)が挙げられると思います。正直な話、Incante
Incanter is a Clojure-based, R-like platform for statistical computing and graphics. Incanter can be used as a standalone, interactive data analysis environment or embedded within other analytics systems as a modular suite of libraries. Features Charting & visualization functions Mathematical functions Statistical functions Matrix & linear algebra functions Data manipulation functions Interactive,
Java Native Access from Clojure I tried to pick up JNI multiple times but in the end, I got bored. There is so much boiler plate code that you have to write even for trivial things. A while ago I stumbled upon a project called JNA (Java Native Access), it allows you to access native shared libraries from Java without using the Java Native Interface. I have been meaning to play with it for a while,
The original document appears at http://clojure.org/rationale. The translation is based on November 27, 2009 version of the page. 読みにくくて申し訳ないです。数多くの間違いがあると思いますので、ご指摘ください。 顧客や出資家は、業界標準のプラットフォームであるJava仮想マシン (Java Virtual Machine; JVM) に相当な投資をしており、そのパフォーマンス、セキュリティ、安定性などに満足している。Java開発者は、動的言語の簡潔さ、柔軟さ、生産性をうらやましく思うものの、顧客の環境で動かせるかどうか、既存のコードやライブラリが使えるかどうか、そして動作速度などについて心配するかもしれない。また、ネイティブ・スレッドやロッキングによる並行処理に
Clojure のエレガントなところ - hozumiの日記 一つの事をするのに複数の方法があるところ。 Pythonに毒された感覚ですが。 Pythonは「誰もが正しいと考える、たった1つの方法をできる限り採用する(There should be one—and preferably only one—obvious way to do it)」という方針に従って設計されています。 Python 3.0ではreduce関数(Clojureのreductions)は組み込み関数ではなくなりました。ループで書くというベターな選択肢があるからです。mapもfilterも無名関数も、あまり推奨されていません。map/filterはリスト内包表記、無名関数も名前付き関数という、より良い選択肢があるからです。もちろん、後方互換性の問題がありますし、使わないわけでもないのでreduceもfunctoo
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く