#:g1: lisp-executableの紹介

Posted 2014-12-26 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の361日目です。

lisp-executableとはなにか

 lisp-executableは、Mark Cox氏作のCommon Lispで実行ファイルを作るためのユーティリティです。

パッケージ情報

パッケージ名lisp-executable
Quicklisp
ドキュメントLisp Executable
CLiKiCLiki: lisp-executable
Quickdocslisp-executable | Quickdocs
CL Test Grid: ビルド状況lisp-executable | CL Test Grid

インストール方法

(ql:quickload :lisp-executable)

試してみる

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

 現在、大抵のCommon Lisp処理系は実行ファイルが作れますが、lisp-executableを利用すると、シェルから実行するコマンドを簡便に作ることが可能です。
便利なdefine-programという実行ファイルを関数のように定義する構文が用意されているのと、ASDFと統合されているのが特長です。

 こんな感じの定義と、

(defpackage :hello
  (:use :cl :lisp-executable))

(cl:in-package :hello)

(define-program hello (&options help) (cond (help (format t "Help はないよ~%")) (t (format t "おはよう日本~%"))) (terpri))

こんなasdファイルがあれば、

(cl:in-package :asdf)

(asdf:load-system :lisp-executable)

(defsystem :hello :serial t :depends-on (:lisp-executable) :components ((:file "hello") (lisp-executable:executable "hello-bin" :program ("HELLO" "HELLO"))))

asdf:oosのlisp-executable:create-executables-opを実行することで、実行可能ファイルが生成できます。

(asdf:load-system :hello)
(asdf:oos 'lisp-executable:create-executables-op :hello)

生成された実行ファイルを実行してみる

$ ./hello-bin
おはよう日本

$ ./hello-bin --help Help はないよ

まとめ

 今回は、lisp-executableを紹介してみました。
define-programがうまいことできていて非常に便利ですね。

comments powered by Disqus