2017-03-16 18 views
0

関数applyToAllは、関数とListを取り込み、リストの車を取り込んで各要素を関数に適用すると仮定します。リストの各要素をschemeの関数に適用するにはどうすればよいですか?

これは私がこれまで働いてきたものである:

(define applyToAll(lambda (f L) 
       (cond 
        ((null? L)  '()) 
        (#t    (cons (L) (applyToAll f(car L)))) 
       ))) 

私は私が間違っているのかわからないんだけど。 fuctionコールが

(applyToAll (lambda (n) (* n n)) '(1 2 3)) 

ようになり、それが

(1 4 9) 

を返す代わりに、それは返す:関数呼び出しを:開き括弧の後に機能を期待しますが、(リスト1 2 3)

を受け

私のコードがうまくいかない理由についての助け?

ありがとうございます。

+0

は 'L'の関数の一覧ですか?私はそれが両方として使用されるのを見ます。 – Sylwester

答えて

0

「マップ」を実装しようとしているようです。

エラーは、それが機能であるかのようにリストを呼び出しているためです。

(#t    (cons (L) (applyToAll f(car L)))) 

適用する正しい方法は次のとおりです:あなたが必要

(function arg0 arg1 ... argn) 

あなたがここに同じエラーを作っているscheme doc

- (L) ()このスキームでは目的球コールを意味しますリスト内の各要素にfを適用します。 これは動作するはずです:

(短所(F(カーL))(applyToAll F(CDRのL))))

最初elemnet:

(car L) 

リストの残り:

(cdr L) 

GL

関連する問題