hsaml2-0.1: SAML2/Lens.hs
{-# LANGUAGE TemplateHaskell #-}
module SAML2.Lens
( fieldLens
) where
import Control.Lens.Lens (lens)
import qualified Language.Haskell.TH as TH
fieldLens :: TH.Name -> TH.ExpQ
fieldLens f = do
a <- TH.newName "a"
b <- TH.newName "b"
return $ TH.VarE 'lens `TH.AppE` TH.VarE f
`TH.AppE` TH.LamE [TH.VarP a, TH.VarP b] (TH.RecUpdE (TH.VarE a) [(f, TH.VarE b)])