Я читаю Get Programming with Haskell, чтобы понять функциональное программирование. В уроке 10 автор обсуждает использование функционального программирования для создания простых объектов с помощью замыканий. До этого места в книге обсуждались функции высшего порядка, лямбда-функции и замыкания.
Он описывает что-то вроде:
simpleObject intAttribute= \message -> message intAttribute
simpleObject возвращает замыкание, которое в результате сохраняет intAttribute. Закрытие принимает функцию в качестве аргумента и предоставляет intAttribute в качестве параметра. Например (мой):
obj = simpleObject 5
doubleIt x = 2 * x
obj doubleIt (returns 10)
Я думаю, что я довольно ясно до этого момента.
Затем автор описывает метод доступа, похожий на:
getAttribute y = y (\x -> x)
getAtrribute obj (returns 5)
Код работает, как и ожидалось, возвращая захваченный атрибут intAttribute. Здесь я теряюсь. Как работает код getAttribute?
($id)
в одном случае иflip ($)
в другом). Чем это должно быть полезно? - person Dan Robertson   schedule 31.10.2018