Table of Contents はじめに Leiningenのインストール SLIMEとは Marmaladeのインストール SLIMEのインストール swank-clojureのインストール SLIMEの使い方 windowsで日本語を扱う場合 参考書籍 注釈 はじめに この記事は、自分がClojureで開発環境を準備するために調べたことをまとめています。 対象読者 Clojureに興味あるけど始め方がわからんという人。 素のREPLでClojureしてるけど使いにくいと感じてる人。 普段Emacs使ってるけど、SLIME?なにそれ?って人。 推定環境 Java6 emacs23 lein slime OSは、Ubuntu10.04とwindows7, windowsxpで動作確認しています。 Clojureのインストールは、ビルドツールのLeiningenを使えばとっても簡単です。
こんにちはこんにちは!! 清水です。今回は入門Clojureじゃなくて、Clojureのちょっと実践的な機能を紹介します。飽きたわけじゃないんだからねっ! ClojureはJVMで動いているので、Javaのクラスが使えます。実際、ClojureのデータはJavaのオブジェクトになっています。Javaではクラスを継承したりインタフェースを実装して、メソッドをオーバーライドすることにより、値によって異なる処理を実装します。 Clojureで値によって異なる処理を実装したい場合、同じようにクラスを作ることもできますが、その他にも「プロトコル」や「マルチメソッド」等いくつかの手段が用意されています。今回はその「マルチメソッド」を紹介します。 マルチメソッドとは マルチメソッドは複数の関数をまとめたような特殊な関数で、引数の型などによって実行時に処理を変えることができます。また、後から簡単に処理を追
あまり意味のない小ネタです。 JavaScriptで使われるテクニックとして、即時関数というものがあると思います。こういうやつですね。 immediate_func.js (function (firstName, lastName) { println("Hello! [" + firstName + " " + lastName + "]"); })("Taro", "Tanaka") 実行すると $ jrunscript -f immediate_func.js Hello! [Taro Tanaka] ちなみに、jrunscriptというのはJDKに同梱されているJavaScriptの実装(Rhino)ですね。 $ jrunscript -q Language ECMAScript 1.8 implemention "Mozilla Rhino" 1.7 release 3 PRE
Leiningen for automating Clojure projects without setting your hair on fire Leiningen is the easiest way to use Clojure. With a focus on project automation and declarative configuration, it gets out of your way and lets you focus on your code. (defproject leiningen.org "1.0.0" :description "Generate static HTML for https://leiningen.org" :dependencies [[enlive "1.0.1"] [cheshire "4.0.0"] [org.mark
こんにちは。ニャンパスでプログラムを書いている清水(@yuushimizu)です。 このブログでは、主にニャンパスが普段使っている技術(ClojureやMongoDBなど)についての解説やチュートリアルをゆるふわに書いていく予定です。よろしくおねがいしますー。@tnoborioに昨日突然ブログを書けと言われました>< 今回はClojureを実行してみるまでについて軽く書きます。 Clojureって? 「Clojure」はLisp系のプログラミング言語のひとつです。 Lisp系の言語には「Common Lisp」や「Scheme」などがありますが、それらの言語と比べたときのClojureの大きな特徴として「JVMで動作する」ということが上げられます。JVMで動作するので、Javaの標準ライブラリやJava向けに書かれたライブラリ(Apache Commonsとか)を使うことができます。実際、
ClojureでJavaを呼び出すための方法を学んだので書き散らす。 クラスのインスタンス化 (new Classname args*) Classnameにクラス名指定して、args*にコンストラクタに渡す引数をスペース区切りで指定する。 構文糖衣として次の形式があるのでそっちを使うのが一般的らしい。 (Classname. args*) 実際にはこんな感じで使う。 (StringBuilder. "hoge" ) -> #<StringBuilder hoge> インスタンスのメソッド呼び出し (.instanceMember instance args*) instanceMemberにメソッド名、instanceにインスタンスを指す変数、args*にメソッドに渡す引数を指定する。 (.toUpperCase "fred") -> "FRED" Classのオブジェクトのメソッド呼び
こんにちは。ニャンパスの清水です。 前回の続きで、Leiningenを使ってプロジェクトの作り方を解説します。 プロジェクトを作る プロジェクトを作るには lein new プロジェクト名 というコマンドを使います。試しにHello worldを作ってみましょう。 lein new hello-world すると、hello-worldというディレクトリが作成され、その中にプロジェクトのテンプレートとなる以下のファイルが用意されます。 README ... リードミーです。プロジェクトの説明等を書きます。 project.clj ... プロジェクトの構成を定義するファイルです。 src/hello_world/core.clj ... 標準で用意されるソースファイルです。 test/hello_world/test/core.clj ... core.cljのテストの為のソースファイルで
今回もきっかけは「実践プログラミングDSL」からだったりしますが、ClojureDocsとかでもたまに見かけて気になっていた表現があります。 Clojureのこれ -> とこれ ->> です。 何だろ?と思っていたのですが、書籍にも出てきたので調べてみることにしました。 -> >はマクロで、->のすぐ次に書いた値を、続く関数呼び出しの最初の引数として適用できます。関数呼び出しが続く場合は、直前の関数呼び出しの結果が次の関数呼び出しの最初の引数となります。 …書いた方がわかりやすいかも。 (println (-> "test" .toUpperCase)) ;; => TEST (println (-> "t e s t" .toUpperCase (.split " ") seq)) ;; => (T E S T) 最初の例は、文字列「test」にString#toUpperCaseをかけ
少し前にこういうエントリを書きました。その後、元にしたブログのエントリを見ていると、evalとかそういう方向に流れていて、この時に自分が取った方法は随分と遠回りだったことがわかりました。 つか、evalの発想がなかった…。まだまだ考え方は静的言語ってことですね。 まあ、せっかくなので、コード片とかをロードする関数群とevalを触ってみようと思います。 なお、ファイル読み込み系の関数で使用するスケープゴートとしては、以下のものを用意しています。 foo.clj (defn bar [] (println "Hello Foo Bar")) このファイルをカレントディレクトリに置いた状態で、サンプルコードを実行していきます。 load いきなり、変なのから入ります(笑)。名前からして、ファイルからコードを読み込む関数かと思いきや、そうではなく、引数で指定された文字列に対応するものを、クラスパス
Lately I’ve been looking into the Clojure programming language, a Lisp that’s implemented on top of the JVM. One of the aspects of Clojure that I’m interested in is its ability to integrate into existing projects, especially Ruby projects. Since Clojure runs on the JVM and already integrates with Java it should be easy to integrate into a Ruby project run on JRuby. I discovered the JRuby Clojure B
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く