8 Stimmen

Ist es möglich, einen neuen Datensatz mit Linsen zu konstruieren?

Wenn ich einen Aufzeichnungstyp mit Linsen habe, ist es möglich, eine neue Aufzeichnung zu konstruieren, ohne die zugrunde liegenden Aufzeichnungszugriffe zu verwenden?

{-# LANGUAGE TemplateHaskell #-}

import Control.Lens
import Control.Lens.TH

data Foo = Foo { _s :: String
               , _b :: Bool
               } deriving (Show, Eq)

makeLenses ''Foo

Ich könnte Foo zu einer Instanz von Data.Default machen und dann def mit Linsen modifizieren, aber nicht alle Aufzeichnungstypen haben vernünftige Standardwerte. Hat Control.Lens eine eigene Möglichkeit, dies zu tun?

6voto

bennofs Punkte 11873

Nein, im Moment gibt es keine Möglichkeit, das zu tun. Sie müssen etwas wie Foo{} als Standard verwenden oder beim Aufbau von Datensätzen keine Linse verwenden. Es gibt jedoch bereits ein Problem in lens, das dies abdeckt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X