私は現在、MIT スキームの宿題に取り組んでおり、非常に短いと思われるいくつかの問題に遭遇しましたが、それらのいくつかを実装する方法について少し混乱しています。
1 つの問題として、すべての整数を削除したリストを返す関数を作成する必要があります。なんとか解決しましたが、
(define (f2a lst) (map (lambda(x) (remove number? x)) lst))
remove を使用せずに filter を使用するように書き直す方法については混乱していますが。*注:(f2a '(("a" 1 "b") (2 "c") (-1 "d") (-2)))
リターン'(("a" "b") ("c") ("d"))
他の 2 つの問題は、解決策が見つからない問題です。
彼らは私に、正の奇数整数と負の偶数整数をすべて削除したリストを返す関数を書くように頼んでいます。例えば、
(f2b '(("a" 1 "b") (2 "c") (-1 "d") (-2)))
戻り値
(("a" "b") (2 "c") (-1 "d"))
間違ったコードがいくつかありますが、これを解決するためにどのようにアプローチしたかを示していると感じています:
(define (f2b lst)
(lambda(x)
(cond ((and (positive? x) (odd? x)) (filter x lst))
((and (negative? x) (even? x)) (filter x lst))
(else "this should never print"))))
最後の問題は、リストに追加されたすべての文字列からなる文字列を返す関数を要求するだけです。(f2c '(("a" 1 "b") (2 "c") (-1 "d") (-2)))
「abcd」を返します。
私はほとんどこれを理解することができましたが、奇妙な値を返し続けたときに立ち往生しました。これは私が持っているコードです:
(define (f2c lst)
(lambda(x)
(map (lambda (x) (filter string? x)) lst)
(list x))
(string-append (car lst) (cdr lst)))
高次の構文に関しては、map、filter、accumulate、sum に限定されます。私は直接的な答えを求めているわけではありませんが、私が何をする必要があるかを理解するための助けを求めています. 私のコードで何が間違っていますか? これに関して与えられた援助は非常に高く評価されています。ありがとうございました。