Предположим, что мы импортировали Data.Typeable
, который содержит cast :: (Typeable a, Typeable b) -> a -> Maybe b
.
Рассмотрим, что
> cast 'n' :: Maybe Char
Just 'n'
пока
> cast 7 :: Maybe Char
Nothing
Я понимаю выше, но это, кажется, тривиальный пример. Он не показывает, почему кому-то нужно будет использовать оператор cast
(насколько я могу видеть).
Вопрос: Есть ли пример использования cast
, который действительно "изменяет" тип значения от одного типа к другому? Самый близкий пример, который я могу придумать (который фактически не работает в GHCi), будет изменять тип 7
от Integer
до Double
:
> cast 7 :: Maybe Double
Just '7' -- this doesn't work, as 7 is typed as a Integer above; instead GHCi returns Nothing