progn 特殊形式 ¶progn
は、各引数を順次評価し、最後の引数の値を返す特殊な形式です。直前の式は、副作用のみを目的として評価されます。それらによって生成された値は破棄されます。
progn 式のテンプレートは非常にシンプルです:
(progn body...)
zap-to-char において、progn
式は2つのことを行う必要があります。すなわち、point をちょうど正しい位置に配置することと、kill-region がどの程度まで消去すべきか分かるように point の位置を返すことです。
progn の第1引数は search-forward です。search-forward
が文字列を見つけると、関数は対象文字列の最後の文字の直後にポイントを移動させます。(この場合、対象文字列は1文字のみです。)検索を逆方向に行う場合、search-forward
は対象文字列の最初の文字の直前にポイントを移動させます。ポイントの移動は副作用です。
progn の2番目にして最後の引数は、式 (point) です。この式は point の値を返し、この場合は search-forward
によって移動した先の位置となります。(ソースコードにおいて、前方に移動している場合に直前の文字に戻るよう関数に指示する行が1999年にコメントアウトされました。この機能、あるいは不具合とも言える仕様が、配布されたソースコードに含まれていたかどうかは記憶にありません。)point の値は progn 式によって返され、kill-region の第2引数として kill-region に渡されます。