になることを「約束」へ:どのように入力された/ラケットでこの機能を持っている場合は値が特定のタイプ
(: random-if-empty (-> (U Image-Color "empty") Image-Color))
(define (random-if-empty s)
(cond
[(equal? s "empty") (random-color)]
[else s]))
それの入力が"empty"
の場合はランダムな色を返し、そうでなければ、それは入力です返し、どのようにして([else s]
)が、Image-Color
の代わりにImage-Color
または"empty"
であるとタイプチェッカーが言わなくなるのですか?それとも全体的にこれを行うための良い方法がありますか?私はtyped/2htdp/image
ライブラリを使用しています。ここにはImage-Color
があります。
私はそれが等しいとは思わない?それは述語ではないからです。 – Vityou
'文字列? 'に変更すると、' Image-Color'が文字列の場合、プログラムの動作が変わります。 'typeed/2htdp/image'で可能なので、Gibstickの最初の解決策は間違っています。 –