История изменений
Исправление qnikst, (текущая версия) :
haskell, я ж больше ничего не умею // его тожн не умею.
Что делает оператор «$»?
Да, ты понял правильно (вроде), но распишу полностью:
infixr 0 $
($) :: (a -> b) -> a -> b -- Defined in ‘GHC.Base’
f $ x = f x
т.е. функция слева от $
применяется к аргументу справа от $
, поскольку функция имеет минимальный приоритет и правоассоциативна, то захватывает все до конца, таким образом код вида (this (is (very (lisp (like (expresssion))))))
можно переписать как this $ is $ very $ lisp $ like $ expression
.
Часто используется в подобном коде:
foo = bracket (createResource)
(freeResource) $ \res -> do
куча кода
тут мы создаем ресурс, после завершения гарантировано его очищаем (даже в случае исключений (*)) и имеем функцию с ним,
или forM list $ \item -> ...
.
(*) не гарантировано, если главный тред выйдет, а мы не в нём, то freeResource может быть не вызвано.
Исправление qnikst, :
haskell, я ж больше ничего не умею // его тожн не умею.
Что делает оператор «$»?
Да, ты понял правильно (вроде), но распишу полностью:
infixr 0 $
($) :: (a -> b) -> a -> b -- Defined in ‘GHC.Base’
f $ x = f x
т.е. функция слева от $
применяется к аргументу справа от $
, поскольку функция имеет минимальный приоритет и правоассоциативна, то захватывает все до конца, таким образом код вида (this (is (very (lisp (like (expresssion))))))
можно переписать как this $ is $ very $ lisp $ like $ expression
.
Часто используется в подобном коде:
foo = bracket (createResource)
(freeResource) $ \res -> do
куча кода
или forM list $ \item -> ...
Исправление qnikst, :
haskell, я ж больше ничего не умею // его тожн не умею.
Что делает оператор «$»?
Да, ты понял правильно (вроде), но распишу полностью:
infixr 0 $
($) :: (a -> b) -> a -> b -- Defined in ‘GHC.Base’
f $ x = f x
т.е. функция слева от $
применяется к аргументу справа от $
, поскольку функция имеет минимальный приоритет и правоассоциативна, то захватывает все до конца, таким образом код вида (this (is (very (lisp (like (expresssion))))))
можно переписать как this $ is $ very $ lisp $ like $ expression
.
Часто используется в подобном коде:
foo = bracket (createResource)
(freeResource) $ \Resource -> do
куча кода
или forM list $ \item -> ...
Исходная версия qnikst, :
haskell, я ж больше ничего не умею // его тожн не умею.
Что делает оператор «$»?
Да, ты понял правильно (вроде), но распишу полностью:
infixr 0 $
($) :: (a -> b) -> a -> b -- Defined in ‘GHC.Base’
f $ x = f x
т.е. функция слева от $
применяется к аргументу справа от $
, поскольку функция имеет минимальный приоритет и правоассоциативна, то захватывает все до конца, таким образом код вида (this (is (very (lisp (like (expresssion))))))
можно переписать как this $ is $ very $ lisp $ like $ expression
.
Часто используется в подобном коде:
foo = bracket (createResource)
(freeResource) $ \Resource -> do
куча кода
или forM list $ \item -> ...