Como o Haskell printf funciona?
O tipo de segurança de Haskell é o segundoto none apenas para idiomas de tipo dependente. Mas há alguma mágica profunda acontecendo com Text.Printf que parece bastante instável.
> printf "%d\n" 3
3
> printf "%s %f %d" "foo" 3.3 3
foo 3.3 3
Qual é a mágica profunda por trás disso? Como pode oText.Printf.printf
unção @ aceita argumentos variados como est
Qual é a técnica geral usada para permitir argumentos variados em Haskell e como funciona?
(Nota: alguns tipos de segurança aparentemente se perdem ao usar esta técnica.)
> :t printf "%d\n" "foo"
printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t