2014-01-27 3 views
4

Например, я следующая записьЕсть ли какой-нибудь метод построения значения для записи с объективами без идентификаторов подчеркивания?

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

makeLenses ''Rec 

и я вижу только два пути constuct новые значения:

  • 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