私は、Racket-Stampsで遊んでいます。これは、タイプされたRacketと通常のRacketを組み合わせたものです。どのようにAny型の値をRealに変換するのですか?
(define bounding (make-parameter '()))
;; snip
(when (not (empty? (bounding)))
(let-values ([(x1 y1 x2 y2) (apply values (bounding))])
(send pr set-bounding x1 y1 x2 y2)))
:
私はこのリストが型なしラケットから来るのでしかし、それは実際にどれのリストで、新しい機能やレアルのリストで関数を呼び出すための試み以下のコードを書いていますそして、上記のコードを呼び出して別のファイルに:
(bounding '(-20 -100 100 2))
ここでエラーがあります:
タイプチェッカー:悪い引数は「適用 `で機能する: ドメイン:B ... は#f * 引数B:(Listof任意)* 中:(値(境界)を適用)
は、どのように私はListof Real
にListof Any
を変換するのですか?
私は空を作ることができることを発見しました'' ann'関数を使ってRealのリストを返します: '(境界を定義する(ann '()(Listof Real)))') ' - しかし、私はまだエラーを返します。 bout 'apply'、それは' make-parameter'と 'values'と何か関係がありますか? –
'apply'は型付きラケットではほとんどの場合スマートではありません。特に、入力として任意の長さのリストがあり、出力として期待される固定数の値(4つ)があるためです。 –
また、 'values'の型を調べると、ゼロのものや1つ以上のものは許されますが、0以上のものは許されません。私は '(apply values ...)'を使わずにこれを設計しようとします。 –