Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.55 KB | None | 0 0
  1. {-# LANGUAGE DataKinds, FlexibleContexts, TemplateHaskell, TypeFamilies, TypeOperators #-}
  2. import Data.Extensible
  3. import Data.Monoid
  4. import Control.Monad.Identity
  5.  
  6. mkField "a b"
  7.  
  8. -- hsequence
  9. type FS = ["a" :> Integer, "b" :> String]
  10.  
  11. r1, r2 :: Comp First (Field Identity) :* FS
  12. r1 = a <@=> First (Just 1)
  13. <: b <@=> mempty
  14. <: Nil
  15.  
  16. r2 = a <@=> First (Just 5)
  17. <: b <@=> First (Just "x")
  18. <: Nil
  19.  
  20. {-
  21.  
  22. >>> r1r2
  23.  
  24. Just (a @= 1 <: b @= "x" <: Nil)
  25. -}
  26. r1r2 = getFirst
  27. $ hsequence
  28. $ hzipWith (\ (Comp x) (Comp y) -> Comp (x <> y))
  29. r1 r2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement