O Haskell 98 possui uma característica chamada 'tipos fantasma', que permite evitar a passagem de argumentos 'dummy' de forma insegura. Isso é feito através da adição de 'tags' aos tipos, que indicam sua finalidade específica. Dessa forma, é possível garantir que os argumentos passados para uma função estão corretos e evitar erros de programação.Por exemplo, se uma função precisa de um número inteiro como entrada, é possível adicionar uma 'tag' chamada 'Int' a esse tipo de dado, indicando que ele é esperado ser um número inteiro. Assim, se alguém tentar passar outro tipo de dado, como uma string ou um número flutuante, o programa será capaz de identificar esse erro e impedir que o código seja executado.Além disso, os tipos fantasma também podem ser usados para restringir o escopo de variáveis, garantindo que elas só possam ser utilizadas em determinadas partes do código. 