関数を作成しています
(define (run program-string . arguments)
(if (string? program-string)
(value-of (create-ast program-string) (empty-env))
(raise (string-append "expected a program as string, got: " (~a program-string)))
)
)
「arguments」は、プログラムのパラメーターを表す引数の文字列または空のリスト '() になります。「arguments」内の各パラメーターは、位置によって program-string 内の変数、つまり argN にバインドされます。ここで、N は特定のパラメーターの位置 (0 から始まる) です。
Eg.
(run "move((0 0) arg0 arg1 arg2 arg3 arg4 arg5 arg6)"
"up(3)"
"right(5)"
"right(4)"
"down(2)"
"up(6)"
"right(2)"
"right(3)"
)
Output: (coordinate-value '(point xcord ycord)) //
したがって、これらの関数と値はすべて私の言語で既に定義されており、xcord と ycord は最終移動後の実際の座標であると仮定します。その入力が与えられたら、"up(3)" を (0 0) に、"right(5)" を arg0 に、などとバインドしたいと思います。引数。
run 関数は基本的に、各引数に対応する引数を割り当て、その最終文字列を実行する必要があります。