LINUX.ORG.RU

История изменений

Исправление 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 -> ...