Skip to content

Instantly share code, notes, and snippets.

@takeisa
Created September 23, 2012 06:03
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takeisa/3769042 to your computer and use it in GitHub Desktop.
Save takeisa/3769042 to your computer and use it in GitHub Desktop.
Common Lisp format memo
* common-lisp: format:
~a aesthetic
~s readで読める形式
~:a nil → () で出力
~% 改行
~& 先頭でないときに改行
~5% 5個改行
~~ ~を出力
~5~ 5個出力
~c 文字
~:c 印字されない文字を名前で出力
ユーザに文字についてのメッセージを出力するときに使える。
~@c Lisp文字リテラルのシンタックスで出力
~:@c 文字の入力方法(処理系依存)
~d ~x ~o ~b ~r 整数
~d: 10進
~:d ,区切り
~@d 符号付き
~:@d 両方
前置パラメタ
1: 出力幅
2: パディングに使う文字
~10,'0d 10桁0埋め
3: :指定時の区切り文字
4: :指定時の区切り桁数
~x, ~o, ~b 16進、8進、2進
~r 任意の基数
前置パラメタに 基数を設定
以降のパラメタは ~d と同じ
"~3,15,'0r" 基数3,15桁,0埋め
~r 何も付けないと 英語のテキスト
: 序数
@ ローマ数字
:@ 古いローマ数字
~f ~e ~g ~$ 浮動小数点数
~f 数が小さい or 大きい場合に指数表記
~e 常に指数表記
前置パラメタ
1: 何だろ?
2: 小数点以下の桁数
~$ ドル(通貨用)
デフォルト小数点以下2桁
前置パラメタ
1: 小数点以下の桁数
2: 整数部桁数 → でも0埋め
~f,~e,~$
@で符号が付く
~p 複数形の表記制御
"~r file~:p" num
num = 1 → one file
num = 10 → ten files
num = 0 → zero files
: を付けると引数を消費しない
@ y または ies を出力する
family families
~( ~)
小文字で出力する
@ 文の最初を大文字
: 全ての単語の最初を大文字
:@ 全て大文字
~[ ~]
インデックス(0から)に対応する文字列を出力
~[zero~;one~;two~;~:;default~]
~:; デフォルト
デフォルト指定がなく、インデックスに対応する文字列がない場合は何も出力しない
~#[ ~] 引数の個数に応じて出力を変更できる
~:[ ~] nilの場合は最初の文字列、それ以外は二つめの文字列
二つの節だけ含められる。
~@[ ~] 引数がnilではなかったら、引数を消費できるようの戻してから、節を処理する。
→ nilだったら表示しない処理ができる
"~@[x=~a~] ~@[y=~a~]" 10 20 → x=10 y=20
~{ ~} 反復
~^ リストの最後だったら、以降の制御文字列を処理しない
"~{~a~^, }" list CSVの出力
~@{ ~} 残りのフォーマット引数をリストとして扱う
~{ ~}の中では # は処理されずに残っている要素の個数
~{ ~:} リストが空でも最低一回は繰り返しが実行される
~:{ ~} リストのリストを処理
前置パラメタ 繰り返し回数の上限
~* 引数を飛ばす
~:* 引数を戻す
"~r ~:*(~d)" 1 → one (1)
前置パラメタ 前後に移動する数
~@* 前置パラメタ 絶対的な位置に飛ぶ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment