вот везде в книжках пишут, что мол если делать конкатенацию двух списков, например так: «Hello»++«world», то это очень долго, так как «Hello» - это список, и чтобы добавить в конец него что-то еще, нужно пройтись по нему от начала до конца.
Но ведь haskell - язык ленивый, если я делаю что-то такое:
head x::xs = x
concat x::xs y = x::(concat xs y)
x = "Hello" ++ "world"
y = head x
то
head x = head ("Hello" `concat` "world") = head 'H'::("ello" `concat` "world") = 'H'
где я не прав? или книжки тупят?