0

私はSchemeが初めてで、よく知られている2つのリストの「マージ機能」をプログラムする必要があります。アルゴリズムは理解していますが、このエラーが何度も発生しています。

**merge((list 1 2 3) (list 4 5 6))**
<procedure:merge>
. . application: not a procedure;
expected a procedure that can be applied to arguments
given: (1 2 3)  arguments...:(4 5 6)

私は自分のコードが間違っていると思ったので、デバッグを続けました.ダミー関数に変更して、それでも同じように反応するかどうかを確認しました. やった。

#lang scheme

(define (merge list1 list2)

  (cond ((null? list1)list2)

    ((null? list2)list1)

    (else

    "Nothing more to do!"

    )
   )
)

構文チェックでは、「間違っている」ものは何もありませんでした。同様の問題に対する回答も読みましたが、それを理解することはできません。残っている唯一のオプションは、理由を理解していないのに間違った関数呼び出しを行っていることです。

フィードバックをお待ちしております..

4

1 に答える 1

1

問題は、プロシージャを呼び出す方法にあります。これの代わりに:

merge((list 1 2 3) (list 4 5 6))

これを正しい方法で試してください。括弧の位置に注意してください。

(merge (list 1 2 3) (list 4 5 6))
于 2013-11-10T02:30:12.140 に答える