如果我在打字/球拍此功能:如何「承諾」,一個值將是某種類型
(: random-if-empty (-> (U Image-Color "empty") Image-Color))
(define (random-if-empty s)
(cond
[(equal? s "empty") (random-color)]
[else s]))
,如果是輸入"empty"
返回一個隨機顏色,否則返回它的輸入,如何停止類型檢查器說s
(在[else s]
)可以是Image-Color
或"empty"
而不是預期的Image-Color
?或者有更好的方法來做到這一點?我正在使用typed/2htdp/image
庫,這是來自Image-Color
的地方。
我想它不適用於平等?因爲它不是一個謂詞。 – Vityou
如果'Image-Color'可以是一個字符串,則將其更改爲'string?'可更改程序的行爲。由於'typed/2htdp/image'可以,因此Gibbs的第一個解決方案是錯誤的。 –