#:g1: paren-utilの紹介

Posted 2014-06-24 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の176日目です。

paren-utilとはなにか

 paren-utilは、Red Daly氏作のParenScriptを便利に使う為のライブラリですが、Common Lisp側というより主にParenScript側のライブラリです。

パッケージ情報

パッケージ名paren-util
Quicklisp
Quickdocshttp://quickdocs.org/paren-util
CL Test Grid: ビルド状況paren-util | CL Test Grid

インストール方法

(ql:quickload :paren-util)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 Quickdocsで確認できるのは主にLisp側になりますが、ソースを眺めてみるとどうもParenScriptで書いたライブラリ部分がメインのようです。util.parenがユーティリティの本体で、Common Lispでお馴染のevery、find、subseq等の関数も定義されていたりはしますが、まあ、そっちはオマケという感じかもしれません。
一応並べてみると、

が定義されていたりはします。
他、anaphoraを移植しようとした形跡がありますが、まだ動くようにはなっていないようです。

 使い方ですが、こんな感じのファイル one-plus-two.parenがあったとすれば、

;; -*- mode: lisp -*-

(in-package :paren-util)

(defun pr (s) ((ps:@ document write) s))

(defun one-plus-one () (pr "<b>1+2</b>の答えは") (pr (+ 1 2)) (pr "です!") nil)

(defun iota (n &optional (start 0) (step 1)) (let ((ans '())) (dotimes (i n ans) (push-on-end start ans) (incf start step))))

(defun print-list (list) (pr "<ul>") (dolist (e list) (pr "<li>") (pr (escape-html ">>")) (pr e) (pr (escape-html "<<")) (pr "</li>")) (pr "</ul>"))

これとライブラリを

(paren-files:compile-script-file-to-js-file
 (asdf:system-relative-pathname :paren-util "src/paren/util.paren")
 :destination-file "util.js")

(paren-files:compile-script-file-to-js-file "one-plus-two.paren")

こんな感じでコンパイルして、htmlかなにかから読み込みという感じでしょうか。

まとめ

 今回は、paren-utilを紹介してみました。
JavaScriptをCommon Lispっぽく書けるだけでもやっぱり嬉しいですね。

comments powered by Disqus