Function

Functional Programming - Recursive Functions

Recursive Function Recursive라는 표현은 아마 모든 분들이 익숙하실 겁니다. (한국어로 재귀라고 합니다) 간단히 설명드려 함수를 다루는 기법하나로 함수 내부에서 그 함수를 다시 호출하는 것을 말하는데요. Functional Programming에서 가장 중요하게 생각하는 것이 여기서 tail call을 없애는 겁니다. Stack이 쌓이는 경우 때문인데, 다음 설명을 계속 보겠습니다. factorial :: Int -> Int factorial n = product [1..n] 위의 예제는 간단히 factorial을 product를 이용하여 구현한 것 입니다. 이 함수를 이용할 경우 다음의 과정을 거치게 될 것입니다. factorial 4 = product [1..4] = product [1,2,3,4] = 1*2*3*4 = 24 다음은 이 함수를…

Keep reading

Functional Programming - Functions

Conditional Expressions 다른 언어들과 마찬가지로 Haskell도 조건식이 존재합니다. 다만 statement가 아닌 expression을 이용합니다. abs :: Int -> Int abs n = if n >= 0 then n else -n 위의 예는 절대값을 만드는 간단한 function입니다. 아래와 같이 nested로 표현도 가능합니다. signum :: Int -> Int signum n = if n < 0 then -1 else if n == 0 then 0 else 1 (Haskell에서는 애매한(ambiguous) 경우를 제거하기 위해 else가 필수입니다.) Guarded Equations 위와 같은 조건식을 사용하는 것과 달리 guarded equation이라는 것을 이용하여 표현이 가능합니다. abs n | n >= 0 = n | otherwise = -n…

Keep reading