The latest reviewed version was checked on 16 April 2020. There is 1 pending change awaiting review. Official Clojure reference & API : link "Clojure - Functional Programming for the JVM" by R. Mark Volkmann: link Moxley Stratton - "Clojure Tutorial For the Non-Lisp Programmer" : link Satish Talim - "Clojure Notes": link Eric Rochester - "Clojure Series" (deals with tokenization and stemming) : li
教科書: Clojure in Action 作者: Amit Rathore出版社/メーカー: Manning Pubns Co発売日: 2011/11/28メディア: ペーパーバック クリック: 24回この商品を含むブログ (2件) を見る マクロ ? Clojureランタイムの動き ソースコード ------> [Read] -------> [Evaluate]まず、リーダーがソースコードをClojureのデータ構造に変換してから、評価されてプログラムが実行される。 マクロは評価される前のデータ構造上で振る舞いを定義することができる関数で、評価される前にプログラムからコードを操作することができる。 ソースコード ------> [Read] --- <macro> ---> [Evaluate] これができると、Clojureに新しい機能を追加することができたりするということ。 u
ClojureのAPIリストを眺めていたら面白いマクロがありました。 -> と ->> です。 Rubyのメソッドチェインのようなことができます。 例えば次のようなRubyでの処理は 123456789.to_s.length => 9 ClojureでもJavaのメソッドを直接使う場合は .. でチェインできます。 user> (.. 123456789 toString length) => 9 -> を使えばこれをClojure上の関数で実現できます。 user> (-> 123456789 str count) => 9 123を文字化して逆順にする場合 user> (-> 123 str reverse) => (\3 \2 \1) reverseは文字のシーケンスを返すので user> (->> 123 str reverse (apply str)) => "321" のよ
別に難しくはないけど、いざ使いたいという時に方法を忘れてしまっており、何度か調べ直しているのでメモに残しておく。 以下のようにrust-cryptoを使えば実現可能。 サンプルプロジェクトの準備: $ rustc -V rustc 1.9.0 (e4e8b6668 2016-05-18) $ cargo new md5 --bin $ cd md5 $ echo 'rust-crypto = "*"' >> Cargo.toml $ vim src/main.rs # 以下を参照 使用例: extern crate crypto; use crypto::digest::Digest; use crypto::md5::Md5; fn main() { let mut md5 = Md5::new(); md5.input(b"hoge"); println!("hoge: {}", md
2011/12/29更新 時代遅れの手順になってしまいました。 Clojure+Emacsな開発環境を作る(late 2011) - λab's Blogを参照してください。 ネットブックにUbuntu 10.04 を入れたので emacs から Clojure を使う手順を最初の最初から書いてみる。2ヶ月ぐらい前にやったインストール方法だとだめでした。 環境 Ubuntu Netbook Edition 10.04 GNU Emacs 23.1.50.1 機種 HP mini 2140 emacs をインストールする emacs23とか22とかいろいろあるみたいですがよく分からないので最新っぽいのをインストール $ sudo apt-get install emacs-snapshot $ sudo apt-get install emacs-snapshot-el $ sudo apt
People come to Clojure from a variety of backgrounds. The purpose of this book is to help everyone get the most out of the Clojure language. It is not meant as a replacement for the documentation, found at the Clojure site. Please do not copy material from there to here! Feel free to post your own code, written in the Clojure language, here. However, please do not post excerpts, patches or other m
前回説明するといって放置したやつを再度。 XMLを扱うだけならば、cxmlを使うのがお手軽。 グーグル先生に聞くとcXMLという規格があるようでドキュメントが見つかりづらい。 Closure XMLというのが正式名称らしいのでそちらでググった方が良い。 公式サイトはここ。http://common-lisp.net/project/cxml/ 大体の使い方はQuick-Start Exampleで確認できる。 YahooのXMLを読んでみる Yahooの開発者ベージにXMLのサンプルが乗っている。 http://developer.yahoo.co.jp/search/rest.html このドキュメントのURLの構築の項の例を使う。 http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=YahooDemo&qu
普通のやつらの上を行けでLispにおけるマクロの効用が述べられているが, 「じゃあ具体的にマクロを使って『こりゃ便利だ』っていう例を見せてよ」 と言われてもなかなかすぐに出て来ない。 そこで、なんかいいマクロの使用例を思い付いたら書いてってみるコーナー。 通りすがりのマクロ初心者です。便利なマクロの具体例はすごく知りたいので、この項、期待してます。 Paul Graham「On Lisp」を読書中でなかなか良いけど、日本語の解説があった方が理解が早まるので。 もくじ マクロを使う局面定型パターンの簡略化関数呼び出しのインライン展開の代用新しい構文による抽象化ミニ言語の埋め込み宣言的なコードに見せるコンパイル時の処理具体例クラス定義でのリーダーの生成リストの内包表記 (List comprehension)リストの構築他の処理系の移植 関連:Scheme:マクロの危険 マクロを使う局面 なん
Common Lisp による日常作業 CSV ファイルを読む (read-line, read-line-into, simple-stream-read-line とか) 以前のエントリ CSV ファイルを読むコード で、ちょろっと いかにも Scheme なコードなのでループと状態マシンに書き直すとかの高速化の余地がありますね。 今迄ちっこいファイルしか読んでなかったので、ちょっとメモリ使用量が多いなー。 まぁ、Gauche と違って immutable な文字列じゃないんで共有とかできないから効率わるいんじゃろ。 などと目を背けていたのですが、ある程度の規模の CSV を読んだら途端に性能問題が。うがぁ。 簡単に体感できる量だと 20MB 程度のデータを読み書きしてみればわかります。 (use text.csv) (length (call-with-input-file "KEN
いまさらながら Twitter を再開しています。 そこで Common Lisp で Twitter API をたたいてみたいと思います。 REST なので Drakma で http-request すればできちゃいます。フォーマットは JSON を指定して、CL-JSON でデコードします。 デコードまでしてしまえば alist のリストが手に入るので、後は煮るなり焼くなり好きなように。なのですが、せっかくの Common Lisp なので無駄に with-selector なんていうマクロを書いて遊んでいます。 次のページを参考にさせていただきました。ありがとうございます。 観測気球さんのTwitter API 仕様書 (勝手に日本語訳シリーズ) Twitter Development Talk API Documentation (eval-when (:compile-topl
ANSI Common Lispに含まれない仕様は、当然ながら処理系によってまちまちです。複数の処理系に対応するコードを書く場合は *features* 変数を利用します。 *features* 変数には処理系固有のシンボルが含まれています。CLISPなら (:REGEXP :SYSCALLS :I18N :LOOP :COMPILER :CLOS :MOP :CLISP :ANSI-CL :COMMON-LISP :LISP=CL :INTERPRETER :SOCKETS :GENERIC-STREAMS :LOGICAL-PATHNAMES :SCREEN :FFI :UNICODE :BASE-CHAR=CHARACTER :UNIX :MACOS) SBCLなら (:ANSI-CL :COMMON-LISP :SBCL :UNIX :SB-DOC :SB-TEST :SB-LDB
Emacs上でSLIMEを起動するのはかんたん。M-x slime と命令するだけでOKだ。 けど終了させるときはどうだろう。 まず、Emacsじたいの終了は最悪の結末をもたらす。これまで何度か起こっているように、lisp-runプロセスがEmacsという親プロセスを無くして暴走、CPUパワーを食いまくるということになってしまう。これをいちいちkillするのは何とも馬鹿らしい。 じゃあlispを消せば良いじゃん。うん、じゃあやってみる。 CL-USER> (bye) ; Evaluation aborted ==================== Lisp connection closed unexpectedly: exited abnormally with code 256…なるほど。inferior lisp program は殺せても、Emacs上でのバッファは消えない。おま
external-format の使い方がわかったところで、実用的には文字コードの判定処理が必要になる場合が多い。 external-format を知っただけでは、with-open-file の external-format に何を指定すればいいのか迷ってしまう。 で、いろいろ蘊蓄を語ろうと思ったのだが、ふと Gauche の文字コード判定処理を CL に移植して比較したところ 性能、精度とも私の手作りのものより断然よかったのでこっちを採用。 Gauche のソースの ext/charconv/guess.scm, ext/charconv/guess.c, ext/charconv/guesstab.c が日本語エンコーディング判定処理だ。 guess.scm で状態表 guesstab.c を出力し、 C コンパイラで guess.c guesstab.c をコンパイルしてモジュ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く