R5RS 互換性に関する引数コマンド < 引数コマンド一覧 < [click go-back button to go-back] < Viiviの小部屋 < 入り口 / Entrance
Viivi は当初 R5RS に厳密に従う振る舞いをするように設計されました.
しかし,ここに挙げる引数コマンドをはじめ,
viivi-set!
および Viivi IDE の設定パネルを用いて,
各項目ごとに R5RS に厳密に従う振る舞いをするようにも,
慣用的な振る舞いをするようにも指定することができます.
-C <MODE>
C
は「Continuation」の頭文字です.<MODE>
は継続の呼び出しが受け付ける引数の個数のモードを表す整数値です.
0 継続呼び出しは引数なしだけを受けつける
1 継続呼び出しは 引数 1 個 (デフォルト,R5RS 互換) だけを受けつける
2 継続呼び出しは 引数 なし または 1 個 のどちらでも受けつける
[例]
$ viivi -K -C 0
引数なしで継続呼び出しを行うように指定します.[同機能]
・手続き呼び出し: (viivi-set! continuation-argument-number-mode <MODE>)
-callcc
call/cc
を,トップレベルで R5RS の手続き
#<procedure:call-with-current-continuation>
に束縛します.[同機能]
・手続き呼び出し: (define call/cc call-with-current-continuation)
をあらかじめトップレベルで行うことと等価.call/cc
シンボル
-E <BITSET>
E
は「eval」の頭文字です.#<procedure:eval>
の呼び出しが受け付ける引数の個数を指定します.<BITSET>
は
#<procedure:eval>
の呼び出しが受け付ける引数の個数 (1 および 2) から作られるビットセットですが,0 だけは許されません. 1 #<procedure:eval>
呼び出しは 1 個の引数だけを受け付ける (デフォルト)
2 #<procedure:eval>
呼び出しは 2 個の引数だけを受け付ける (R5RS 互換)
3 #<procedure:eval>
呼び出しは 1 個 または 2 個の引数を受け付ける
[例]
$ viivi -K -E 2
R5RS が規定しているように,
#<procedure:eval>
呼び出しが引数を 2 個だけ受け付けるように設定します.[同機能]
・手続き呼び出し: (viivi-set! eval-argument-number-bitset <BITSET>)
-q <MODE>
q
は「eq?」の中の文字です.#<procedure:eq?>
が数値や文字のデータを比較するとき,
デフォルトでは R5RS に従い,
数値や文字のメモリアドレスを使いますが,
Viivi では値による比較の方法も選択できます.<MODE>
は比較の方法を表す整数値 (0 から 3 まで) です.
0 #<procedure:eq?>
が数値および文字を比較するときにはそのメモリアドレスを比較する
(デフォルト,R5RS 互換)
1 #<procedure:eq?>
が数値を比較するときにはその値を比較する
2 #<procedure:eq?>
が文字を比較するときにはその値を比較する
3 #<procedure:eq?>
が数値および文字を比較するときにはその値を比較する
[例]
$ viivi -q 1
#<procedure:eq?>
が引数として与えられた数値を
比較するときだけは
それらのメモリアドレスではなく値を用います.[同機能]
・手続き呼び出し: (viivi-set! eq?-comparison-mode <MODE>)
-R <MODE>
R
は「Return」の頭文字です.#<procedure:define>
および
#<procedure:set!>
の呼び出しからの戻り値の返しかたを指定します.#<procedure:define>
/
#<procedure:set!>
呼び出しからの戻り値の返しかたを表す整数値
(0 から 3 までのいずれか) です.
0 #<procedure:define>/#<procedure:set!> 呼び出しの両方が #<unspecified>
を返す
(デフォルト,R5RS 互換)
1 #<procedure:define> 呼び出しだけが新たな束縛値を返す
2 #<procedure:set!> 呼び出しだけが新たな束縛値を返す
3 #<procedure:define>/#<procedure:set!> 呼び出しの両方が新たな束縛値を返す
[例]
$ viivi -R 2
#<procedure:define>
の呼び出しは
#<unspecified>
を返し,
#<procedure:set!>
の呼び出しは新しい束縛値を返します.[同機能]
・手続き呼び出し: (viivi-set! binding-return-value-mode <MODE>)
-RL <MODE>
RL
は「Return from Load」の略です.#<procedure:load>
呼び出しからの戻り値の返しかたを指定します.<MODE>
は
#<procedure:load>
呼び出しからの戻り値の返しかたを表す整数値
(0 または 1) です.
0 #<procedure:load> 呼び出しは #<unspecified> を返す (デフォルト, R5RS 互換)
1 #<procedure:load> 呼び出しは,#<procedure:load> 呼び出し内の最後の評価値を返す
[例]
$ viivi -RL 1
#<procedure:load>
の呼び出しは
#<procedure:load>
呼び出し内で最後に評価された結果の値を返します.
[同機能]
・手続き呼び出し: (viivi-set! load-return-value-mode <MODE>)
R5RS 互換性に関する引数コマンド < 引数コマンド一覧 < [click go-back button to go-back] < Viiviの小部屋 < 入り口 / Entrance
2022/03/02 開設
Copyright(C) 2003-2022 ilma <ilma@viivi.io> All rights reserved.