NamedFieldPuns 확장하고 같이 쓰면 타이핑 줄이는데 도움이 많이 되겠네
쌩기초 문법만 알고 있는 상태에서 haskell 코드 구경하다 이런 문법을 만나면 정말 난감하다. lisp 이면 매크로를 따라갈수라도 있지. haskell 의 경우 좀 덩치큰 소스는 확장을 여러개 해서 LANGUAGE 프라그마가 여러개 나오는데 해당 소스의 신기한 문법이 도대체 어디서 나온건지 알수가 없다...
뭐 천천히 구경을 계속해보자.
{-# LANGUAGE RecordWildCards #-}
-- 많은 필드를 가진 레코드가 있을때
data C = C {
a :: Int,
b :: Int,
c :: Int,
d :: Int
} deriving (Show)
-- 원래대로라면 미칠듯한 타이핑을 해야한다.
f C{a=a, b=b, c=c, d=d} = a+b+c+d
-- .. 으로 모든 필드를 읽어올수있다.
g C{..} = a+b+c+d
-- 일부만 패턴을 주는것도 가능
h C{a=1,..} = b+c+d
-- 헐 이런짓도 가능.
i = C {a=1,..}
where b=2
c=3
d=4
댓글 없음:
댓글 쓰기