私は、カリフォルニア大学バークレー校のサイトで2011年からブライアンハーベイのSICP講義をフォローしています。彼はSTkインタープリターを使用してクラスを教えており、私はDrRacketを備えたラケットを使用してフォローしています。私は、追加の練習のために、ラケットで定義されていないクラスで使用するすべての関数(つまり、、、)を定義しようとしていword
ます。butfirst
butlast
を定義しようとして問題が発生しましたmember?
。彼はリストや文字列でそれを使用して、次のようなことをすることができます
(member? 1 (list 1 2 3 4)) ;; works
(member? 'a '(a e i o u)) ;; works
(member? 7 17) ;; doesn't work
(member? #\e "Hello") ;; doesn't work
member?
上記が機能する/機能しない私の定義は次のとおりです。
(define (member? u lst)
(not (equal? (member u lst) #f)))
つまり、これはリストで機能しているので、最初の2つは機能していることを意味します。member?
STkで模倣する関数を作成することさえ可能ですか?ドキュメントを見ていましたが、文字列、リスト、非負の整数など、さまざまなものがsequence
データ型として定義されているようですが、関連するシーケンス関数が見つかりません。