だからここに私の問題があります(抽象的な状況に一般化されています)。一般的には通訳です。
入力リストを解析する必要があるプログラムを取得し、その要素に従って、変数を変更する必要があるいくつかの関数を順次呼び出します。関数は個別に定義され、(condによって選択されます。更新する必要があるこれらの 3 つの変数には、現在の状況 (正確には、ロボットの位置、迷路、およびロボットの向き) に関する情報が含まれています。前の関数の結果は、次の関数で使用されます (つまり、更新された変数が使用されます)。
(define func-a ... )
(define func-b ... )
(define (main-func <maze> <orientation> <coordinates> <list with commands>)
;; here I parse the list and choose which function to call
;; output must contain (list <new-maze> <new-orientation> <new-coordinates>))
)
これらの変数を更新するには、どのスキーム ツールを使用できますか? 私はいくつかのオプションを検討しました:
- use (define してから set を呼び出します! (純粋な関数型プログラミングではないため、これは悪いスタイルです);
- 関数を最初から最後まで呼び出します (これは機能しません。移動が有効かどうかも確認する必要があります)。
- これらの変数をまったく定数にしないでください。各関数に引数として渡してみてください。
他に適切な方法はありますか?