Lenses

# · 🔥 191 · 💬 96 · one year ago · www.fpcomplete.com · Gadiguibou · 📷
ComposeLens :: Lens a b -> Lens b c -> Lens a c composeLens = Lens. S a = ? view :: Lens s a -> s -> a view = ? over :: Lens s a -> -> s -> s over = ?. Deriving Functor over :: Lens s a -> -> s -> s over lens f s = runIdentity s) view :: Lens s a -> s -> a view lens s = getConst personAddressL :: Lens Person Address personAddressL f person = <$> f getPersonAddress :: Person -> Address getPersonAddress = view personAddressL modifyPersonAddress :: -> Person -> Person modifyPersonAddress = over personAddressL setPersonAddress :: Address -> Person -> Person setPersonAddress address = modifyPersonAddress. Lens :: -> -> Lens s a lens getter setter = f s -> setter s <$> f. Then we can more easily define lenses for person. F => -> - Our old monomorphic variant type Lens.' s a = Lens. Real challenge: now implement those lenses again, but without using the lens helper function. It "Lives on Wilshire." $ street `shouldBe` wilshire it "GetStreet works." $ getStreet alice `shouldBe` hollywood it "Birthday." $ getAge `shouldBe` age alice + 1 Exercise 2 street :: Lens.' Address Text street = lens street address :: Lens.' Person Address address = lens address age :: Lens.' Person Int age = lens age Exercise 3 street :: Lens.' Address Text street f address = <$> f address :: Lens.' Person Address address f person = <$> f age :: Lens.' Person Int age f person = <$> f Exercise 4 let.
Lenses



Send Feedback | WebAssembly Version (beta)