-2

関数を作成しています

 (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 関数は基本的に、各引数に対応する引数を割り当て、その最終文字列を実行する必要があります。

4

1 に答える 1