-
[Haskell] 5 - 3. $ (function application)๊ณต๋ถ/ํจ์ํ ํ๋ก๊ทธ๋๋ฐ 2020. 2. 16. 14:23
$
Function Application ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ์ค์ผ์์ ๊ฐ์ฅ ์ฐ์ ์์(precedence)๊ฐ ๋ฎ์ ํจ์๋ก, ์์ ์ ์ค๋ฅธ์ชฝ์ ํจ์๋ฅผ ๋จผ์ ์คํํ๊ฒ ํด์ค๋ค.
๋ณดํต์ฒ๋ผ, ์คํ์ด์ค ( ' ' )๋ก ๊ตฌ๋ถ๋ ํจ์๋ค๋ก ์ด๋ฃจ์ด์ง ํ๋ก๊ทธ๋จ์ด sqrt 3 + 4 + 9 ์ด๋ ๊ฒ ์์ผ๋ฉด, sqrt 3 ๋จผ์ , ๊ทธ ๋ค์ + 4, ๊ทธ ๋ค์ + 9 ์ด ์์ผ๋ก ์คํ๋๋ค. ์ด๋ฅผ left - association (์ผ์ชฝ ์ฐ๊ด)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ทธ๋ฐ๋ฐ, $๊ฐ ๋ถ์ผ๋ฉด ๋ฐ๋๋ก $์ ์ค๋ฅธ์ชฝ ๋ถํฐ ์คํ๋๋ค.
๋ง์ฝ ์์ ํ๋ก๊ทธ๋จ์ด sqrt (3+4+9) ๋ก ์คํ๋์ด์ผ ํ๋ค๋ฉด, $๋ฅผ ์ฌ์ฉํด ์๋์ฒ๋ผ ํํํ ์ ์๋ค.
sqrt $ 3 + 4 + 9
๊ดํธ๋ฅผ ๋์ฒดํด ๊ฐ๋ ์ฑ์ ๋์ฌ์ค๋ค.
$ ๊ฐ ๊ดํธ์ ์ ( ' (' )์ด๊ณ , ์๋์ผ๋ก ๋์ ๋ซ๊ธฐ ๊ดํธ ( ' ) ' )๋ฅผ ๋ถ์ฌ์ค๋ค๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.
์๋ ํจ์๋ฅผ $๋ฅผ ์ฌ์ฉํด์ ()๋ค์ ์ ๊ฑฐํด๋ณด์.
sum (filter (> 10) (map (*2) [2..10]))
=> 80filter๊ฐ ๊ดํธ๋ก ์ธ์ฌ ์๋ค. filter๋ฅผ ๋จผ์ ์คํํ๊ฒ ๋ค๋ ์๋ฏธ๋๊น, filter ์์ $๋ฅผ ๋ถ์ด์.
sum $ filter (> 10) (map (*2) [2..10])
=> 80์, ์ ๋์ค๋ค. ๊ทธ๋ผ ๋ ์ด๋ ๋ฐ๊ฟ ๋ฐ๊ฐ ์์๊น?
์ง๊ธ ์ ์ดํด๋ณด๋, map๋ ๊ทธ๋ ๋ค. filter๋ณด๋ค map์ ๋จผ์ ์คํ ์ํค๊ณ ์ถ์ ๊ฑฐ๋๊น, map ์์๋ $๋ฅผ ๋ถ์ฌ๋ณด์!
sum $ filter (> 10) $ map (*2) [2..10]
=> 80๋ณต์กํ ๊ดํธ ์์ด, ๋๋ค์ ํจ์๋ค๋ง ๋จ์๋ค! $๋ฅผ ์ฌ์ฉํ๋ฉด ()์ ์ฌ์ฉ์ ์ค์ฌ ๊น๋ํ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋ค.
ํจ์์ ์ฐ์ ์์์ ๋ฐ๋ผ ๊ดํธ๋ฅผ ๋จผ์ ์จ๋ณด๊ณ , ๊ทธ ๋ค์์ $๋ก ๋ฐ๊ฟ๋๊ฐ๋ ์ฐ์ต์ ํ๋ ์กฐ๊ธ ๋ ์์ ์ต๋๋ค :)
์ฐธ๊ณ
๋ณด๊ณ ์๋ ์จ๋ผ์ธ ๊ต์ฌ
http://learnyouahaskell.com/higher-order-functions#function-application
Higher Order Functions - Learn You a Haskell for Great Good!
Higher order functions Haskell functions can take functions as parameters and return functions as return values. A function that does either of those is called a higher order function. Higher order functions aren't just a part of the Haskell experience, th
learnyouahaskell.com
๊ณต๋ถํ ๋ ์ฌ์ฉํ๋ Repl
https://repl.it/languages/haskell
Online Haskell Editor and IDE - Fast, Powerful, Free
Online Haskell Compiler, Online Haskell Editor, Online Haskell IDE, Online Haskell REPL, Online Haskell Coding, Online Haskell Interpreter, Execute Haskell Online, Run Haskell Online, Compile Haskell Online, Online Haskell Debugger, Execute Haskell Online,
repl.it
ํ๊ธฐ
์์ ์ ์ ๋ ์๊ณ ๋ฏ์ ๊ฐ๋ ์ด๊ณ ํ๋ ์๊พธ ์ ๋ฆฌ๊ฐ ๋ฆ์ด์ง๋๋ค ใ ๊ทธ๋์ ๋๋ ์๊ฒ ์ชผ๊ฐ์ ์ดํดํ ๋ถ๋ถ๋ถํฐ ์ฌ๋ฆฌ๊ธฐ๋ก ํ์ด์. ์ดํดํ์ง ๋ชปํ๊ณ ๊ทธ๋ฅ ์ ๊ธฐ๋ง ํ๋ ์ฌ๋ฏธ๋ ์๊ณ ํท๊ฐ๋ฆฌ๊ธฐ๋ง ํ๋๋ผ๊ตฌ์! ๊ณต๋ถ์ฉ ๋ธ๋ก๊ทธ๋ฅผ ์ฐ๋ ๊ฒ๋ ์ ๊ฒ ๋ง๋ ์ ๋ต์ด ํ์ํ๋ค์. ๊ณต๋ถ์ฉ ๋ธ๋ก๊ทธ ์ฐ์๋ ๋ชจ๋ ๋ถ ํ์ดํ ์ ๋๋ค!
'๊ณต๋ถ > ํจ์ํ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Haskell] #6 syntax-in-functions (1) (0) 2020.01.27 [Haskell] #5 Type (2) (0) 2020.01.20 [Haskell] #4 Type (1) (0) 2020.01.19 [Haskell] #3 Tuple (0) 2020.01.12 [Haskell] #2 List(2) Range, list comprehension (0) 2020.01.12