Я изучаю некоторые haskell с этих выходных, я нашел этот язык интересным, но и некоторые синтаксисы заставляют меня смущаться.haskell function invoke order
Вроде, zip
- это функция, которая принимает 2 списка в качестве параметров, а затем возвращает список пар. если я вызываю zip [1,2,3] [3,2,1]
в ghci
Я получил [(1,3),(2,2),(3,1)]
. Но если я скажу (zip [1,2,3]) [3,2,1]
, он возвращает тот же результат.
Когда я посмотрел в определение функции почтового индекса, используя :i zip
, я получил zip :: [a] -> [b] -> [(a, b)] -- Defined in ‘GHC.List’
, от этого, кажется, что zip
функция применяется первый Parmeter, возвращает функцию, а затем применить ко второму параметру.
Другим примером является elem
, elem 1 [1,2,3]
, (elem 1) [1,2,3]
и (1 `elem`) [1,2,3]
вернуть тот же результат.
Так что мой вопрос в том, что функция получает несколько параметров, как эта функция оценивает, обрабатывает каждый параметр по порядку или просто обрабатывает все параметры за один раз.
Вы можете прочитать 'SomeFunc :: а -> Ь -> с 'как' someFunc :: a -> (b -> c) ', что может помочь вам самому ответить на вопрос. – Zeta
см. Также: http://stackoverflow.com/questions/1352855/in-functional-programming-what-is-currying – kieran