#:g1: com.informatimago.common-lisp.interactiveの紹介

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

(LISP Library 365参加エントリ)

 LISP Library 365 の338日目です。

com.informatimago.common-lisp.interactiveとはなにか

 com.informatimago.common-lisp.interactiveは、Pascal Bourguignon氏作の開発時に便利な対話的に使うユーティリティです。

パッケージ情報

パッケージ名com.informatimago.common-lisp.interactive
Quicklisp

インストール方法

(ql:quickload :com.informatimago.common-lisp.interactive)

試してみる

 定義されているものは、ざっとこんな感じなのですが、

REPLからちょこっと実行してみたいものが多いようです。

UNIXコマンド系

 cat、cd、date、ls、less、more、popd、pushd、uptime、は、そのままUNIXのコマンド的なものです。

(date)
;>>  2014-11-19 18:01:22
;>>  
;=>  3625376482

(ls) ;>> foo.txt ;>> bar.txt ...

(cat "foo.txt") ;>> ............ ;>> ........

インスペクト系

 パッケージや、シンボル、オブジェクトの観察が短かいコマンドで実行可能です。

(lschar :start 32 :end 50)
;>>  #x00020      32     "Space"
;>>  #x00021      33  !  "EXCLAMATION_MARK"
;>>  #x00022      34  "  "QUOTATION_MARK"
;>>  #x00023      35  #  "NUMBER_SIGN"
;>>  #x00024      36  $  "DOLLAR_SIGN"
;>>  #x00025      37  %  "PERCENT_SIGN"
;>>  #x00026      38  &  "AMPERSAND"
;>>  #x00027      39  '  "APOSTROPHE"
;>>  #x00028      40  (  "LEFT_PARENTHESIS"
;>>  #x00029      41  )  "RIGHT_PARENTHESIS"
;>>  #x0002A      42  *  "ASTERISK"
;>>  #x0002B      43  +  "PLUS_SIGN"
;>>  #x0002C      44  ,  "COMMA"
;>>  #x0002D      45  -  "HYPHEN-MINUS"
;>>  #x0002E      46  .  "FULL_STOP"
;>>  #x0002F      47  /  "SOLIDUS"
;>>  #x00030      48  0  "DIGIT_ZERO"
;>>  #x00031      49  1  "DIGIT_ONE"
;>>  
;=>  (#\  #\! #\" #\# #\$ #\% #\& #\' #\( #\) #\* #\+ #\, #\- #\. #\/ #\0 #\1)

(lspack :sb-cltl2 :t) ;>> ;>> SB-CLTL2 ;>> Symbols: 9 exported, 2643 total. ;>> Uses: COMMON-LISP SB-C SB-INT SB-KERNEL ;>> Exported: AUGMENT-ENVIRONMENT COMPILER-LET ;>> DECLARATION-INFORMATION DEFINE-DECLARATION ENCLOSE ;>> FUNCTION-INFORMATION MACROEXPAND-ALL PARSE-MACRO ;>> VARIABLE-INFORMATION ;>> ;=> NIL

(diff-package :ibcl :cl) ;>> ;>> ;>> Symbols exported from IBCL not exported from CL: ;>> IBCL:WITH-PACKAGE-ITERATOR ;>> IBCL:USE-PACKAGE ;>> IBCL:UNUSE-PACKAGE ;>> IBCL:UNEXPORT ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.SOURCE:SYMBOLS-WITH-SOURCES ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.SOURCE:SOURCE ;>> IBCL:SHADOWING-IMPORT ;>> IBCL:SHADOW ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.SOURCE:SAVE-SOURCES ;>> IBCL:MAKE-PACKAGE ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.SOURCE:LIST-SOURCES ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.SOURCE:LIST-PACKAGES-WITH-SOURCES ;>> IBCL:IN-PACKAGE ;>> IBCL:IMPORT ;>> IBCL:FIND-SYMBOL ;>> IBCL:FIND-PACKAGE ;>> IBCL:DO-SYMBOLS ;>> IBCL:DO-EXTERNAL-SYMBOLS ;>> IBCL:DELETE-PACKAGE ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFVAR ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFUN ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFTYPE ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFSTRUCT ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFSETF ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFPARAMETER ;>> IBCL:DEFPACKAGE ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFMETHOD ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFMACRO ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFINE-SYMBOL-MACRO ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFINE-SETF-EXPANDER ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFINE-MODIFY-MACRO ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFINE-METHOD-COMBINATION ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFINE-CONDITION ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFINE-COMPILER-MACRO ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFGENERIC ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFCONSTANT ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.CL-SAVING-DEFINES:DEFCLASS ;>> COM.INFORMATIMAGO.COMMON-LISP.LISP.SOURCE:*SOURCE-TYPES* ;>> ;>> ;=> NIL

その他便利系ユーティリティ

 ファイルブラウザのbrowse、パッケージを定義するdefine-package、:com.informatimago.common-lisp.interactive.interactiveが使えるパッケージを作ってくれるmkupack、シンプルなrepl等、replをシェル代わりする場合には結構使えそうなツールが揃っています。

まとめ

 今回は、com.informatimago.common-lisp.interactiveを紹介してみました。処理系のREPLには、こういう便利コマンドが組込まれていたりしますが、com.informatimago.common-lisp.interactiveは、一歩踏み込んでいて便利そうです。

comments powered by Disqus