2017-04-13 12 views
0

私は現在、関数のリストと単語のリストを取り、それらの関数のそれぞれを単語のリストに適用してリストをコンパイルする関数を持っています。 #tまたは#fという単語がそのリストに含まれているかどうかをチェックする関数を返したいと思いますが、これを行う方法がわからず、セットを使用することができません。ここで私はリストを作成し、これまで持っているものです。ラムダ式の戻り値を使用していますか?

(define list-checker 
    (lambda (flist words) 
    (cond 
     ((null? flist) '()) 
     (else   (append (map (lambda(x) ((car flist) x)) words) 
          (list-checker (cdr flist) words)))))) 

使用例:((list-checker (list wordToScrambled wordToReverse) words) '(h e l l o))すべき出力のどちらか#tまたはwordToScrambled#fwordToReverseが機能している、言葉が言葉'((h i)(h e l l o))のリストです。

+2

'gen-checker'とは何ですか? – ceving

+2

私はあなたが何をしたいのかについて100%明確ではありません。あなたは望ましい行動の例を挙げることができますか? –

+1

gen-checkerはtypoです。申し訳ありませんが、list-checkerされているはずです。この関数は、次のように動作します: (list-checker(list wordToScrambled wordToReverse)words) '(hello)) この例のlist-checkerは、単語をスクランブルしてそれらを逆転させる2つの関数のリストと、単語のリスト。次に、渡された関数によって作成された新しいリストに指定された単語が含まれているかどうかをチェックする関数を返す必要があります – user1775500

答えて

2
(define (list-checker flist words) 
    (let ([transformed-words 
     (append* (map (lambda (f) (map f words)) flist))]) 
    (lambda (word) (and (member word transformed-words) #t)))) 
0

だから、関数を構成し、各要素にそれを使用して、それが翻訳された値の一つだ場合、引数をチェックfucntionを返すようにしたいですか?

(define (get-list-checker fns lst) 
    (define trans-lst (map (apply compose fns) lst)) 
    (lambda (e) 
    (and (member e trans-lst) #t))) 

(define test (get-list-checker (list add1 (λ (x) (* x x))) '(1 2 3))) 
(test 10) ; ==> #t 
(test 11) ; ==> #f