O Haskell permite a criação de um novo tipo genérico através de DerivingVia. Isso significa que é possível definir uma nova estrutura de dados a partir de outra existente, mas com algumas modificações específicas. É uma forma de aproveitar o código já existente, mas adaptá-lo para atender às necessidades específicas do projeto.A sintaxe é simples, é necessário apenas declarar o novo tipo genérico e, em seguida, usar a cláusula 'deriving via' para especificar qual estrutura de dados será utilizada como base. Dessa forma, é possível criar tipos personalizados sem precisar reescrever todo o código. 