2015-11-01から1ヶ月間の記事一覧

Common Lispでマクロ展開時エラーをテスト

前回記事の「Parenscriptで少し遊んで見る (5)defstruct編 - eshamster’s diary」ではdefstruc.psマクロ内で展開時のエラー処理を入れたので、テストも一緒に作っています。このときに、マクロ展開時のエラーをテストする方法が意外と見つからなかったので…

Parenscriptで少し遊んで見る (5)defstruct編

Parenscript(PS)用にdefstructのサブセットを作った話です。例によってParenscript拡張の実験場、ps-experimentプロジェクトで実装を試みています。今回の記事時点のタグblog-play-ps-5をつけています。 github.com 前書き:Parenscript拡張の方針 ここま…

Parenscriptで少し遊んで見る (4)続・defun編

背景 第一回では、ps環境の外側でdefunするためのdefun+psを用意しました。そして、それをまとめてJavaScriptに出力するためのwith-import-ps-defマクロを作ったわけですが、出力する関数名を一々指定する必要がありました。 いったんはそこで妥協したのです…

Parenscriptで少し遊んで見る (3)キャメルケース編

リードマクロによるキャメルケース 今更ですが、Parenscriptでは大文字を表現するために、文字の直前にハイフンを置きます。 CL-USER> (ps (@ document get-element-by-id)) "document.getElementById;" Common Lispでは通常シンボル名は大文字として解釈さ…

Parenscriptで少し遊んで見る (2)ドット記法編

@マクロが長い Parenscriptを書いていると真っ先に気になってくるのが@マクロです。下記の最初の例のように一つ程度ではそうでもないですが、いくつか並ぶと主張が激しく気になってきます。newに至っては単体でもだいぶ見づらいです。 CL-USER> (import 'ps:…

Parenscriptで遊んで見る (1) defun編

TypeScriptやCoffeeScriptといったJavaScriptを吐き出す言語の名前をしばしば聞きます(まだ使ったことはないです…。)が、Common LispにはParenscriptというものがあります。少しいじってみていたのですが、defun周りが気になったので少し遊んでみたという…

Common Lispでナイーブベイズをナイーブに実装

精度を問わず簡単に使える分類器が欲しかったので、Common Lispでナイーブベイズ分類器cl-naive-bayesを作りました。 github.com 使い方は簡単です。まずは学習。学習結果を保持するlearned-storeを用意した後は、learn-a-document関数にこのstore,ドキュメ…