タグ

ブックマーク / tailisland.hatenadiary.org (3)

  • ClojureでJavaのクラスを生成するのは、とても簡単でした - tailislandの日記

    前回はJavaのライブラリーを呼び出す話だけしかしていなくて、ごめんなさい、これは明らかな片手落ちでした。オブジェクト指向プログラミングの良いところはフレームワークに代表される制御構造の逆転*1で、だから、クラスの継承やインターフェースの実装を使用した、ライブラリーから呼び出される場合についても述べなければ不十分でした。 というわけで、今回は、Javaのクラスの継承やインターフェースの実装に関する話をさせてください。 ライブラリー間の依存にやられました 前回で述べたのWebDAVツールは、最初はJackrabbit WebDAVを使って作り始めました。Jackrabbit WebDAVはとても便利で、たとえば、以下のような短いコードでWebDAVのPROPFINDメソッドを使ってHREFを取得するコードを実装できます。 ;; project.clj (defproject spike-cl

    ClojureでJavaのクラスを生成するのは、とても簡単でした - tailislandの日記
  • DSLを難しく考えるのは、もうやめにしませんか? - tailislandの日記

    前回は偉そうにDSL(Domain Specific Language)について語ってしまった私ですけど、じゃあお前が作ったDSLを見せてみろと言われたら、とても困っちゃう。 困ってしまう理由は、DSLを作っていないからではありません。「DSLと呼ぶにはあまりにもちょぼくさいと感じられるものしか作っていない」からなんです。 でも、その、私は、「DSLは凄いもの」という考え方の方が間違えているんだと考えています。DSLなんてのはごく当たり前の技術で、だから、ちょぼくさいDSLがあっても当たり前なのだと考えています。 ……ごく当たり前の技術を使って凄いモノを作ることができることを鑑みれば、ちょぼくさいDSL「しか無い」部分については、世間様のDSLに対する理解ではなく、私のスキルの方に問題がある気もしますけど。 言語=文法+語彙 さて、言語というのは、文法と語彙の2つで出来ていると考えます。プ

    DSLを難しく考えるのは、もうやめにしませんか? - tailislandの日記
  • JavaのAPIを使う場合でも、やっぱりClojureらしくプログラミングしたい - tailislandの日記

    この前、Clojureでwebdavからバイナリー・ファイルをダウンロードするツールを作ったんですよ。 私はClojureでファイル入出力をするプログラムを作るのは初めてでしたから、いつものようにCheat Sheetでやり方を調べようとして、で、愕然としました。 「バイナリーのファイル入出力の関数が異常に少ない!*1」 ま、ほら、たぶん、アレですよ。Clojureは表現力が豊かな言語なので、こんな少ない関数でも十分なバイナリー・ファイルの入出力ができる……わけなんかあるかぁ!全部Java任せじゃないかぁ! 裸のClojureでバイナリー・ファイルを読み込んでみる 簡単な仕様で試してみましょう。ファイルを読み込み、他のファイルに書き出すという仕様*2のコードを書いてみます。 といっても、Clojureにはclojure.java.ioパッケージにcopyという関数がすでにありますから、その

    JavaのAPIを使う場合でも、やっぱりClojureらしくプログラミングしたい - tailislandの日記
  • 1