私はときどき Perl 正規表現の夢を見ますが、Common Lisp (CLisp) のフォーマット仕様には、いまだに少し困惑しています。私は次の結果を狙っています:
私が欲しいリスト("No Match" (-2378 11 4) (-2378 11 5))
を考えると:
| No Match| -2378 11 4| -2378 11 5|
もう一方の端から。代わりに私が得るものは次のとおりです。
[685]> (fss sd)
("No Match" (-2378 11 4) (-2378 11 5))
[686]> (format t "|~{~9<~a~>~2*~}~:*~{~*~{|~6d~3d~3d~}~}|" (fss sd))
| No Match| -2378 11 4
*** - There are not enough arguments left for this format directive.
Current point in control string:
"|~{~9<~a~>~2*~}~:*~{~*~{|~6d~3d~3d~}~}|"
|
The following restarts are available:
ABORT :R1 Abort main loop
Break 1 [687]> :R1
[688]>
3 分の 2 に到達したことをうれしく思いますが、この状況に少し頭がおかしくなっています。私の理解が正しければ、|~{~9<~a~>~2*~}
はリストの最初の要素 を消費しNo Match
、残りをスキップします。次の部分は~:*
、引数ポインタをリストの先頭にリセットします。次に、~{~}
ラッパーは私をリストに入れます。次に、~*
リストの既に処理された部分をスキップします。の次のペアは~{~}
、引数の最初のサブリストに入ります。最初のサブリストは正しく処理されます。それから...エラー。明らかに、私のフォーマットの理解には何か問題がありますが、それが何であるかは明確ではありません。
CL の残りの部分はかなり単純明快であると感じることがよくありますが、少なくともCL クックブックには「フォーマット クックブック」の章が必要だと本当に思います。
要するに、この志願者は道のより知識のあるフォロワーからの助けを必要としています. ヘルプ!