Помощь Haskell. и $

В качестве примера возьмем следующее

type Row a = [a]
type Table a = [Row a]

mapTable :: (a -> b) -> Table a -> Table b
mapTable = map . map

notTable :: Table Bool -> Table Bool
notTable = map . map $ (not)

Почему, если я удалю $ из notTable, он перестает работать?

Я объяснял себе это несколько раз, но никогда не срабатывает и мне нужно время, чтобы осмыслить происходящее. Я знаю, что $ в основном гарантирует, что каждая сторона $ оценивается отдельно, потому что $ имеет самый низкий приоритет, но почему это ломается, если я вытаскиваю $?

Спасибо

6
задан Justin 3 April 2011 в 06:25
поделиться