Создаётся universe тип (общее представление для любого значения "динамического типа"), которое отличается тегом. В haskell тег это просто номер конструктора
Такое может любой типизированный ЯП с taggad и даже без tagged unions. И называть это Dynamic имхо некорректно. Это Variant. Такое было еще в бейсике, такое есть в C++ (std::variant), да собственно в любом яп где есть десериализация JSON к примеру
Я знаю чем отличается std::variant от std::any, и чем отличается Dynamic приведённый выше от Data.Dynamic (hint: ровно тем, же чем std::varaint от std::any). При этом я вам написал совсем про другое