2014-01-27 3 views
4

밑줄 식별자없이 렌즈로 레코드 값을 구성하는 방법이 있습니까? 내가 기록을 다음의 한 예를 들어

data Rec = Rec 
    { _a :: Int 
    , _b :: Int 
    , _c :: Int 
    } deriving (Show, Eq) 

makeLenses ''Rec 

나는 새 값을 constuct 단지 2 가지 방법을 참조하십시오

  • Rec{_a=1,_b=2,_c=3}
  • Rec 1 2 3

두 번째 변종이 보이지 않는를 레코드 필드 수가 쌍 이상이고 언더 스코어가 첫 번째 O에서 자연스럽게 보이지 않으면 좋음 네.

레코드 값을 구성하는 다른 방법이 있습니까?

답변

4

유형에 맞는 것이면 Default 인스턴스를 사용하는 것이 좋습니다. 그럼 할 수있어

def & a.~1 
     . b.~2 
     . c.~3 
+0

예,이 옵션을 잊어 버렸습니다. 그것은 내 POV에서 조금 길지만. 왜'def '가 아닌'($ def)'를 쓰나요? – Qrilka