Очевидно, что это одна и та же функция. Так-же очевидно, что хаскель — дубовый язык, в котором функция не может принимать произвольное кол-во аргументов, поэтому, приходится городить кучу костылей, чтобы имитировать функциональность нормальных языков.
В ML тоже есть Printf.printf, но он, вроде, реализован не без помощи препроцессора. Хаскелльный Text.Printf.printf реализован без помощи Template Haskell? Мне лень на него смотреть. =)
Сделать функцию от произвольного количества аргументов конечно же можно, нужно всего-лишь немного typeclass магии, пример есть в сообщении выше, десятке тредов на лоре, и пятерке сообщений в maillist. С другой стороны в haskell все функции на самом деле с Arity 1 (или 0)[0], то понять что f x y это недопримененная функция от большего числа аргументов или полностью примененная от двух нельзя (если не выводится из контекта), так что придётся почти везде везде аннотировать типы, что явно не хочется.
[0] это утверждение следует уточнять, если рассматривать уровень stg, но тут это не важно.
я не понимаю, что значит «сделать из Text.Print.printfprint». Так что поясни, если хочешь услышать ответа.
Как я уже писал «полиморфные по количеству аргументов» функции в Haskell сделать можно, но я не вижу ни одной причины, по которой это нужно, во всяком случае в таком языке как haskell. Так же я не вижу, чем подобные функции как они работают в lisp отличаются от (немного нечестный синтаксис) f :: [forall a . SomeTypeclass a => a] -> B, те же много аргументов, тоже сразу выполнится.
Вообще предложения сделать возможность разного количества аргументов если аргументы являются моноидом относительно функции от хацелелисперов типа Криса Дона уже были, но вроде ничем не кончилось.
qnikst@qwork ~ $ ghci
GHCi, version 7.10.1: http://www.haskell.org/ghc/ :? for help
Prelude> :m Text.Printf
Prelude Text.Printf> let print = printf
Prelude Text.Printf> print "my text\n"
my text
qnikst@qwork ~ $ ghci
GHCi, version 7.10.1: http://www.haskell.org/ghc/ :? for help
Prelude> let print = Text.Printf.printf
Prelude> print "my text\n"
my text