タグ

2010年1月3日のブックマーク (18件)

  • (compile 'hoge.fuga)でコンパイルできない - e-o-nのClojure日記

    Programming Clojureを読みながらclojureの勉強中である。 hoge/fuga.cljをコンパイルしようと、 (compile 'hoge.fuga) を実行すると、ClassNotFoundException例外が発生した。 コンパイルしたいcljソースファイルと、コンパイルされたクラス出力ディレクトリはclasspathを通さないと駄目だった。 ソース格納ディレクトリ c:\home\workspace\clj_src (この下にhoge\fuga.cljを作成) クラス出力ディレクトリ c:\home\workspace\classes とすると、先日のclj.batは以下のように修正する。 @echo off set OPT_DIR=c:\home\opt set CLOJURE_DIR=%OPT_DIR%\clojure set CLOJURE_JAR=%C

    (compile 'hoge.fuga)でコンパイルできない - e-o-nのClojure日記
  • はてなブログ | 無料ブログを作成しよう

    パスタ習作#2 飽き性な性格なのに#1を書いた以降も意外とパスタ熱が冷めなかった。当たり前のことだが、基が分かってくると応用ができる。応用ができると自由度が増す。自由を手に入れると継続ができる。批評家の福尾匠が自身の日記に、小倉知巳のペペロンチーノのレシピはよくで…

    はてなブログ | 無料ブログを作成しよう
  • reduceと多次元配列 - マンジラボ

    久々にのけぞった。 いやもうね map とか reduce とか強力すぎるからw Clojureで多次元配列を扱う方法を探していたのですが たとえば3×3×3の大きさの3次元配列: (def lattice [[ [1 2 3] [4 5 6] [7 8 9]] [[10 11 12] [13 14 15] [16 17 18]] [[19 20 21] [22 23 24] [25 26 27]]]) の任意の要素を取り出したいとする。 lattice[z][y][x] のように簡単に要素を取り出したい。 いろいろ検索して見つけた答えは Clojureで書くとこうなります。 (reduce nth lattice [z y x]) うわー。やられた。おもいっきり盲点。 reduceは rubyでいうところの injectと覚えていたので (1..6).inject(:+) # = 1

  • in which are found tricks of the trade concerning clojure authorship - Technomancy

    So it turns out getting set up to write Clojure code can be a little tricky. There are a lot of disconnected tidbits about how folks have figured out how to configure things, but it can be a bit tricky to tell the difference between, "hey, this is how I finally got it to work" and "this is how you really should be doing it". I figure I know about as much about using Clojure with Emacs as anybody,

  • clojure-mode.el と swank-clojure を使う - 月の塵

    Emacs, Clojureざっと見た感じでは Emacs で Clojure を書く場合には、 clojure-mode.el を使うのが一般的であるらしい。clojure-mode.el のソースを眺めてみると、補完やドキュメントの参照といった機能はなく、そのあたりの機能は swank-clojure を介して SLIME に頼るようになっているようだ。swank-clojure (を含めた Clojure 環境一式)のインストールは clojure-mode.el から行えるようになっている。まずは clojure-mode.el の設定をする。 clojure-mode.el を load-path の通ったところに置き、 Emacs で次の式を評価する。 (require 'clojure-mode) (setq clojure-src-root (expand-file-nam

  • *scratch* バッファを自動的に保存/復帰する - 月の塵

    EmacsEmacs の起動・終了時に *scratch* バッファのみ内容が自動的に復帰・保存されると便利かなと思って書いてみた。 ;;; save and restore *scratch* (defvar scratch-file (expand-file-name "~/.emacs.d/scratch")) (defvar scratch-initp nil) (defvar scratch-name "*scratch*") (add-hook 'kill-buffer-hook #'(lambda () (when (eq (current-buffer) (get-buffer scratch-name)) (write-file scratch-file)))) (add-hook 'kill-emacs-hook #'(lambda () (when (get-buff

  • オンラインCookbookを集めてみた – taichino.com

    最近Python クックブックを良く眺めているのですが、Cookbookをまじめに活用しているのは実は初めてです。以前はプログラムは動けば良いと思っていたのですが、pythonを使い始めてから、他の言語を使う時も「どう書くのが正解なのか」を結構意識するようになりました。そうするとCookbookが非常に役に立つわけで、オンラインで使えるCookbook・逆引きサンプル集的なサイトを集めてみました。 python周辺

  • https://blog.8-p.info/2010/2-fsc-ruby

  • alterとcommute - e-o-nのClojure日記

    Programming Clojureをcommuteの説明まで読んだので、alterとcommuteの違いが分かるようなサンプルプログラムを書いてみた。 test.clj (def *counter* (ref 0)) (defn test-func [name time] (fn [] (dotimes [i 5] (Thread/sleep 1000) (print (format "%d: I am %s. " i name)) (dosync (print ".") (.flush *out*) (alter *counter* inc) ; (commute *counter* inc) (println (format " --> %d" @*counter*)) (when time (Thread/sleep time)))) (println (format "%s e

    alterとcommute - e-o-nのClojure日記
  • echo server - e-o-nのClojure日記

    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

    echo server - e-o-nのClojure日記
  • 俺の .screenrc が火を吹くぜ

    たまにはこういう生産性のない話題もいいよね! さて、まあおまえらも GNU Screen くらいは使ってるとおもうわけだが。こいつがまたひどいバッドノウハウでさあ。ほとんどの人が他人の .screenrc をコピペしてきて済ませちゃうんだよね。俺くらいカスタマイズして使ってるやつとか見かけないわけよ。当に。CodeRepos 見ても俺に比肩する規模の .screenrc 書いてる奴はいないもん。で、たまーにプロジェクタに表示して見せたりすると「それどうなってるんですか」とか。まあ一般人のおまえらは info なんか読まないよね。そうだよね。 でも今日は気が向いたから line-by-line で何が起こってるか解説しちゃうよ。 .screenrc の前にスクリーンショットの解説をちょっとだけ これが普段俺が使ってるノート PC の画面である。これで全画面。OS は普通の Ubuntu で

    俺の .screenrc が火を吹くぜ
  • duck-streams - e-o-nのClojure日記

    clojure.contrib.duck-streamにはファイル入出力用の便利な関数が定義されている。 ; 使用する関数を宣言 (use '[clojure.contrib.duck-streams :only (spit append-spit pwd)]) ; ファイルに文字列を出力する。 (spit "hello.txt", "こんにちは、世界!\n") ; ファイルに文字列を追記する。 (append-spit "hello.txt" "こんばんは、世界!\n") ; カレントディレクトリを取得する。 (pwd) 実行結果は次の通り。 user> (spit "hello.txt", "こんにちは、世界!\n") nil user> (append-spit "hello.txt" "こんばんは、世界!\n") nil user> (pwd) "c:\\home\\workspa

    duck-streams - e-o-nのClojure日記
  • Clojure as a 0.8 true language - Go towards a Word-Progress

    気クラウド勉 その2 BooなsilverlightでprotocolBufferをホゲるまで http://ff.im/-doNaQ 6 days ago GolangのSinatra風フレームワーク(?)web.goでハローワールド+α http://ff.im/-dki1v 1 week ago GAE for Python向きのIDE? PyScripter http://ff.im/-djCgk 1 week ago More updates... Posting tweet...Powered by Twitter Tools Javaバーチャルマシン上のLisp系新言語Clojureの良さについて書く。 Lisp系といっても、なんだか読みやすいのである。そして、実案件でも使われていたり。興味を持った方は、まずは、「InfoQ Jruby Clojure」あたりでぐぐってみ

  • ClojureがSTMとLISPをJVMにもたらす

    Clojure(リンク)はLISPファミリの言語のかなり新しいメンバであり、Javaプラットフォームで動作する。2007年に導入され、すで高い関心を集めている。ひとつの理由はClojureの並行処理へのアプローチであり、ソフトウェアトランザクショナルメモリ(STM)のコンセプトを踏まえている。 Stuart Halloway氏は「Programming Clojure」(リンク) (Pragmatic Programmersで公開されている)の著者であるが、このは現在ベータ版である。私達はStuart氏とClojureやSTM、ツール、さらにたくさんのことを話した。 InfoQ: Clojureは並行処理の支援にSTMを使用していますが、STMについて簡単に教えて下さい。 STMはもっと大きな話である、ミュータブルな状態のための明確なAPIの一部です。みなさんのコードを純粋な機能的でミュ

    ClojureがSTMとLISPをJVMにもたらす
  • Scheme:マクロの危険

    Lisp系マクロを言語に取り込むべきかどうかというのは、 しばしば大きな議論を呼ぶ。 (ここでは伝統的なLispのマクロとScheme/Dylanのマクロの違いは問題にはしない) Lispのマクロを知る者は、少なくともそれが非常に強力な言語機能だという点では 一致する。見解が分かれるのはその先だ。マクロ反対派は、マクロが「強力すぎる」 ために、むしろ言語は制御された力を提供すべきだとする。マクロ推進派は、 力を使いこなすのも濫用するのもプログラマの手に委ねるべきだとする。 参考議論: Macros Make Me Mad: LL1メーリングリストのスレッド それに対するGuy Steeleのパロディ(1)、 (2)、 (3)、 (4) What's better about Ruby than Python?: comp.lang.pythonでのスレッド。途中から何故かマクロの是非に関す

    Scheme:マクロの危険
  • Lisp:よくある誤解

    Lispについてのよくある誤解と、その中にあるちょっとした真実 はてなの質問: プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。 http://jp.franz.com/index.html しかし、 世間ではマイナー言語のようです。 なぜでしょうか。 についた回答のいくつかには、「Lispを少しだけかじった人がしがちな誤解」が 含まれてるようなので、それをネタに少し解説してみます。 ただ、誤解が生じるのは、やっぱりそれなりの理由があって、従ってその 誤解の中にも(条件つきの)真実が含まれていることがあります。 そのへんまでをも含めて考えてみましょう。以降、引用は回答からです。 Lispはスクリプト言語? 一昔前まで、これらのスクリプト系の言語は「とてつもなく遅い」のが嫌われる最大の要因でしたが、最近のコンピューターの性能向上でようやくRuby,Python,Li

    Lisp:よくある誤解
  • Scheme:マクロの効用

    普通のやつらの上を行けでLispにおけるマクロの効用が述べられているが, 「じゃあ具体的にマクロを使って『こりゃ便利だ』っていう例を見せてよ」 と言われてもなかなかすぐに出て来ない。 そこで、なんかいいマクロの使用例を思い付いたら書いてってみるコーナー。 通りすがりのマクロ初心者です。便利なマクロの具体例はすごく知りたいので、この項、期待してます。 Paul Graham「On Lisp」を読書中でなかなか良いけど、日語の解説があった方が理解が早まるので。 もくじ マクロを使う局面定型パターンの簡略化関数呼び出しのインライン展開の代用新しい構文による抽象化ミニ言語の埋め込み宣言的なコードに見せるコンパイル時の処理具体例クラス定義でのリーダーの生成リストの内包表記 (List comprehension)リストの構築他の処理系の移植 関連:Scheme:マクロの危険 マクロを使う局面 なん

    Scheme:マクロの効用
  • WebKit について (コード) - 2010-01-02 - 兼雑記

    WebKit のコードについて。 Google 社内のコードを見慣れてると、 WebKit のコードはまず、オープンソース的な感じというか、ありていに言うとコメントが圧倒的に少ないように感じます。特に内部についてわかってない人もわかるようなコメントを書く気は基的に無いらしく、冗長気味なコメントを書くとむしろ削ってちょとレビューされたりします。偉い人死んだらどうするのかなー的な。 あとは関数名とかもイマイチなのが多いように思います。個人的な体験で一番印象的だったのは HTML parser 内にあった parseSpecial という関数でした。この special ってのは textarea, script, style, iframe なんかの中にあるタグが無視されるような種類のものを指していたのですが、 special って命名はアレだなぁ…と。そう思いつつ WebKit の人はみん

    WebKit について (コード) - 2010-01-02 - 兼雑記