Jak działa Haskell printf?

Bezpieczeństwo typów Haskella nie ma sobie równych tylko w przypadku języków z typami zależnymi. Ale w Text.Printf zachodzi pewna głęboka magia, która wydaje się raczej dziwna . > printf "%d\n" 3 3 > printf "%s %f %d" "foo" 3.3 3 foo 3.3 3 Jaka kryje się za tym głęboka magia? W jaki sposób...