2016-06-13 13 views
2

何かがこれを助けることができれば本当に感謝します。私はこれを働かそうとしている日に頭を叩いていました。私はインターネットを検索し、マニュアルを読み返したが、私は理解していない。スキーム:位置が間違ったタイプの引数

guile << __EOF__ 

(define heading-list (list 'a 'b 'c) 
) 

(define (make-heading-list) 
    (let* ((mycond #t)) 
    (if mycond 
     (set! 
      heading-list 
      (append (
       heading-list 
       (list 'd) 
      ) 
      ) 
     ) 
     (display 'false) 
    ) 
    heading-list 
) 
) 

(make-heading-list) 
__EOF__ 

私はこれを実行すると、私が手:

ERROR: In procedure setter: 
ERROR: In procedure setter: Wrong type argument in position 1: (a b c) 

私は、フォーマットが非STD知っている - それが動作するとき、私はそれを修正します。

編集----------------------------------------- コード(うまくいけば合理的になりましたフォーマット済み):

guile << __EOF__ 

(define heading-list (list 'a 'b 'c)) 

(define (make-heading-list) 
    (let* ((mycond #t)) 
     (if mycond 
      (set! 
       heading-list 
       (append heading-list (list 'd))) 
      (display 'false)) 
     heading-list)) 

(make-heading-list) 
__EOF__ 
+0

あなたは両方の場所で 'heading-list'の周りに余分な括弧を持っています。そんなことはしないでください。そのような問題を解決するのが難しくなります。また、全体的なコードはいくつかの場所で奇妙に思えますが、なぜ 'mycond'を'#t'にバインドしてから分岐するのですか?リストを返すのではなく、なぜ 'set! 'ですか?こんにちはAlexis。 –

+0

ご協力いただきありがとうございます。私はheading-listの両方で関数のmake-heading-listを削除しました。 'エラー:手続き中(a b c): エラー:適用するタイプが間違っています:(a b c)'これは私が本当にやりたいことを単純化したテストであり、ifをテストしたいので、mycondを使用しています。私はセットを使用しています!いずれにしても仕事をすることができなかったからです。提案が歓迎 - 特にコード例! –

+0

更新されたコードで質問を更新できますか?それは参考になると思います。 –

答えて

2

heading-listリストです。あたかもプロシージャのように使用しています。 (heading-list)は、「ゼロ引数に手順heading-listを適用する」を意味します。したがって、エラーメッセージ "wrong type to apply"が表示されます。

+0

こんにちはマイケル、私は括弧を削除しようとしましたが、別のエラーを得る - 上記のコメントを参照してください。私はあなたが言っていることを理解していますが、修正する方法がわかりません。 –

+0

'append'の手続きとして' heading-list'を使っています。 '(append heading-list(list 'd))'でなければなりません。 –

+0

マイケル、今すぐに感謝!そして、私はなぜそれを理解していると思います。今はとてもシンプルなようです... –

関連する問題