Clojure is a robust, practical, and fast programming language with a set of useful features that together form a simple, coherent, and powerful tool. The Clojure Programming Language Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.
#数学の問題 #プログラミング ノイマンの方法で非負整数を作る。 0 = {} 1 = {{}} 2 = {{},{{}}} 3 = {{},{{}},{{},{{}}}} … あなたの好きなプログラミング言語で作ってみよう! — 結城浩 (@hyuki) May 17, 2016 これがなかなか手こずりました。 いや、アルゴリズムが、って意味じゃなくって計算速度がなかなか上がらんキッツい問題だな、と言う意味です。 さて、これは定義上は、見かけはビックリするんですが、実は実装的にはPythonのrange関数(あるいはSchemeのSRFI-1のiota)の再実装みたいなモンです。 つまり、入力nに対して何を返すのか、と言うと実は 1を入力 -> [0]を返す 2を入力 -> [0, 1]を返す 3を入力 -> [0, 1, 2]を返す ってのと全く同じ事をしてるんですね。ただ、最初に0を
Programming Clojureを読み終えた。 Common Lispとは微妙に違うので、コードを書く時にとまどう事も多いが、豊富なJavaライブラリを直接使用できるのは大きな利点である。 emacs + slimeを使えば、動作確認をしながらコードを書けるので、サクサク開発できて、なかなか便利である。 一通りの機能は理解できたので、いろいろ書いてみようと思う。 ネットワーク関係が面白いので、まずはecho serverを作ってみた。 sample/echo.clj (ns sample.echo (:use [clojure.contrib.server-socket :only (create-server close-server)])) (def port-no 3000) (defn echo [in out] (let [caption (str "*echo(" (.g
Google App EngineのWebアプリをClojureで簡単に作成できるか試してみた。 appengine-magic appengine-magicを使うと簡単そうだな。 https://github.com/gcv/appengine-magic/tree/ Getting Startedに従って、作ってみよう。 Google AppEngine SDKのインストール Python版とJava版があるが、Java版をダウンロードする。 ~/optにappengne-java-sdk-1.4.0を解凍する。 ~/opt/appengine-java-sdk-1.4.0/binにPATHを通す。 Hello,world!を作る まずはHello,world!を作ってみるよ。 プロジェクトの作成 helloプロジェクトを作成する。 $ lein new hello カレントディレク
思いは言葉に。 はてなブログは、あなたの思いや考えを残したり、 さまざまな人が綴った多様な価値観に触れたりできる場所です。
この話題は去年の間に収束したとおもっていたのですが、再燃してきているみたいなので記事にしておきます。 Clojure使いを何と呼ぶか。 Clojure使い – skalabeの日記 結論から言うと “Clojurian“。 実はRich本人がすでに言及しています。 The A-Z of Programming Languages: Clojure (Page 3) interviewer: Perl gurus are ‘Perl Mongers’, Python ones are ‘Pythonistas’. We think Clojure needs something similar. Any suggestions? Rich: I think everyone has settled on Clojurians. というわけでもうClojurianでいいよね。> all 「Cl
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Unit Testing in Clojure One thing I love about Clojure is the built in unit tests. Unit tests are great for making sure your code does what it needs to do and introducing new features or bug fixes doesn't break anything. You can refactor your code anytime you want and be sure that you did not break anything. Unit tests also serve as a living documentation for your code base, newcomers can look at
まず、以下のチュートリアルを。 Android with Emacs on Ubuntu # しかし現実トウヒばかりだな。。 Emacs on Ubuntu はスルー Install Android とりあえず、eclipse の設定があったりするはずなので ~/opt 配下に symlink 作成。 $ cd opt $ ln -s ../android-sdk-linux_x86-1.5_r2/ android $ ls -l 合計 8 lrwxrwxrwx 1 rms rms 32 2010-01-23 19:57 android -> ../android-sdk-linux_x86-1.5_r2/ drwxr-xr-x 6 rms rms 4096 2010-01-22 22:12 clojure drwxr-xr-x 9 rms rms 4096 2010-01-22 22:2
clojureでいろいろとコードを書き始めると、多種のjavaのライブラリを使うことになると思うが、いちいち.emacsにライブラリを追加するのは面倒だ。 Emacs Lispのdirectory-files関数を使うと指定したディレクトリにあるjarファイルをリストとして取得できるので、swank-clojure-extra-classpathsを以下のように記述すると、 ~/opt/compojure/deps ~/opt/libs にあるjarライブラリをまとめて追加できる。 .emacsのクラスパス設定部分 (setq swank-clojure-jar-path "~/opt/clojure/clojure.jar" swank-clojure-extra-classpaths (append (list "~/opt/swank-clojure/src/main/clojure
gistに書けば良かったかも。 listを一連の流れの連鎖ではなく候補からの選択と捉えてみると、別な形のマクロが思い浮かぶ。 (やり過ぎ良くない…ただ、実験ということで) 例えば、こんな感じ。clojureの->,->>にならい、初期値を取りそれをもとに選択を行うようになっている。 (define (f x p val) (and (p x) val)) (define (QandA Q) (@maybeL Q (f symbol? 'symbol) (f integer? 'int) (f list? 'list) (f identity 'unknown))) (map QandA '(10 aa (aa) #(aa))) ; => (int symbol list unknown) 他の構文とは異質なものなので、それをはっきりさせるために@をつけている。 code (use util
リスト、ハッシュマップ、ベクタ、集合のリテラルがある ;リスト (1 2 3 4) ;ハッシュマップ {:a 1, :b 2, :c 3} ;ベクタ [1 2 3 4] ;集合 #{1 2 3 4} よく使う基本データ型のリテラルがあるというのはソースコードに図が入ってるみたいで考えるよりも早く理解できる。しかもいじりやすい。他の多くの言語でもこれらの基本データ型のリテラルは用意されているが、Clojure ではこれらはとてもよく使う重要なビルディングブロック。 リスト、ハッシュマップ、ベクタ、集合、文字列 をシーケンスとして抽象化 (take 2 '(a b c d)) ;リスト ;=> (a b) (take 2 {:a 1 :b 2 :c 3 :d 4}) ;ハッシュマップ ;=> ([:a 1] [:b 2]) (take 2 [:a :b :c :d]) ;ベクタ ;=> (:a
One of the great things about Clojure is the Java toolbox that it brings to the table. Socket programming has never been one of Lisp's strong points, and although it has always been possible to write network applications in Lisp, platform specific details and portability are generally a concern. Luckily, the JVM provides one of the most tested networking stacks on the planet, so we can cast any of
遅まきながら、一部でブーム?のClojureの本、「プログラミングClojure」読んでます。 プログラミングClojure 作者: Stuart Halloway,川合史朗出版社/メーカー: オーム社発売日: 2010/01/26メディア: 単行本(ソフトカバー)購入: 10人 クリック: 324回この商品を含むブログ (71件) を見る ClojureはJVM上のSchemeライクなlispで関数型言語で高速とのことです。 Clojureに興味があったのは、何で高速なのかを知りたかったということが一つです。マイクロなベンチマーク(1,2)を見るとなかなか速いらしい(少なくともGroovyよりは)。Lispも動的系の言語なのに、なぜその差が生じるのかなと。 まだ本を途中まで読んだ限りですが、高速であることの理由として、関数型だから副作用が無くてロックしないコレクションを持ってるとかもある
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く