В дополнение к другим ответам ...
Вы можете, если хотите, использовать модуль Data.Dynamic
для работы с динамическими типами в Haskell.Например:
> let dyns = [ toDyn (5 :: Int), toDyn "hello", toDyn not ]
Затем вы можете легко написать тест для определенного типа, используя fromDynamic
:
isString :: Dynamic -> Bool
isString dyn = isJust (fromDynamic dyn :: Maybe String)
И вы можете применить его к любому значению Dynamic
, чтобы определитьесли он содержит String
:
> map isString dyns
[False,True,False]
Итак, если вы решите использовать динамическую типизацию с использованием модуля Data.Dynamic
, тогда да, вы можете сделать это.