Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {-# LANGUAGE TemplateHaskell #-}
  2.  
  3. import Control.Lens
  4. import Control.Lens.Combinators
  5.  
  6. data Container = Container { _slot1 :: Maybe String
  7.                            , _slot2 :: Maybe Int
  8.                            }
  9.     deriving (Show)
  10.  
  11. makeLenses ''Container
  12.  
  13. setOrError g s val cont = case (cont ^. g) of
  14.                               Nothing -> Right (set s val cont)
  15.                               Just  x -> Left "Error: Already defined"
  16.  
  17. setSlot1 val = setOrError slot1 slot1 val
  18. setSlot2 val = setOrError slot2 slot2 val
  19.  
  20. cont = Container (Just "") (Just 0)
  21.  
  22. test = setOrError slot1 slot1 (Just "Foo") cont
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement