スキーム内で任意の数の引数を取ることができる独自のカスタム<関数を作成しようとしています。これをどうやってやりますか?スキームのn-ary関数
私は(と(< x y)(b < y))のような何かをしなければならないと思っていますが、わかりません。うまく
スキーム内で任意の数の引数を取ることができる独自のカスタム<関数を作成しようとしています。これをどうやってやりますか?スキームのn-ary関数
私は(と(< x y)(b < y))のような何かをしなければならないと思っていますが、わかりません。うまく
はより少なくより操作バイナリとしてb<
を使用して、スキーム内の1つのように動作します<
の実装です:
(define (< . args)
(cond
[(null? args) #t]
[(null? (cdr args)) #t]
[(b< (car args) (car (cdr args)))
(apply < (cdr args))]))
ありがとうございます。私は実際にリストの/ cdrをチェックするために、またはステートメントを持っていることを除いて、似たようなバージョンをやってしまった –
、オフを開始するために、あなたはその後、数字は引数を含むリストになります
(define (my-< . numbers)
<body>
)
ようなもので可変引数関数を定義します。そこから任意の数の引数に対して動作するように、ある種のループまたは再帰が必要です。ここで
これに 'case-lambda'を追加するのが好きです。 (http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-6.html) –
私はその機能の一部を持っています。 –
うーん...それは**どういう意味**(B
@Karl:標準スキームでは、 '<'は引数リストがソート順であれば '#t'を返します。私は 'b <'が同じことをすると思います。 'と(
スキームの '<'関数_already_は、0を含む任意の数の引数を取ります。カスタム '<'関数が必要なのはなぜですか? –