Я иду через «узнать тебе Haskell», и я написал после применения:
import System.IO
main = do
filename <- getLine
handle <- openFile filename ReadMode
content <- hGetContents handle
putStr . unlines . (map isLong) . lines $ content
hClose handle
isLong :: String -> String
isLong x = if length x > 10 then x ++ " long enough" else x ++ " could be better!"
И это работает, но когда я удалить «$» между строками и содержанием компиляцией терпит неудачу.
Не могли бы вы помочь мне понять, почему это неправильно?
Я думал, что я сочиняю утверждения с точками, и я получаю функцию (String -> IO()), и я применяю ее к «контенту», но зачем нужен «$» здесь?
Спасибо!