함수형 작성 방식

박준규·2023년 2월 24일
1

하스켈은 아래와 같이 두 가지 방식으로 작성할 수 있다.

  • 선언 방식(declaration style)
  • 표현 방식(expression style)

함수 filter를 두 가지 방식으로 작성하면 아래와 같다.

filter :: (a -> Bool) -> [a] -> [a]

-- Declaration style
filter p [] = []
filter p (x:xs) | p x = x : rest
                | otherwise = rest
                where
                  rest = filter p xs
                  
-- Expression style
filter = \p -> \xs ->
         case xs of
         [] -> []
         (x:xs) -> let
                     rest = filter p xs
                   in if (p x)
                      then x : rest
                      else rest

선언 방식

선언 방식은 등식을 최대한 여러 개 작성한다. 예를 들어 filter ... =이 선언 방식에서는 두 번 쓰였고 표현 방식에서는 한 번 쓰였다.

선언 방식에서 주로 사용하는 문법은 아래와 같다.

  • where
  • 함수 인자를 등호의 왼쪽에 적음
  • 패턴 매칭과 가드를 함수 정의 부분에서 사용함

선언 방식을 주로 사용하는 언어는 아래와 같다.

  • KRC
  • Miranda

표현 방식

표현 방식은 작은 표현 여러 개를 합쳐서 하나의 큰 표현을 만든다.

표현 방식에서 주로 사용하는 문법은 아래와 같다.

  • let 표현식
  • 람다 함수
  • case 표현식
  • if 표현식

표현 방식을 주로 사용하는 언어는 아래와 같다.

  • Lisp
  • ML
  • Scheme

참고

profile
코딩하는 물총새

0개의 댓글