{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE ExtendedDefaultRules #-} module THPatTest where import Language.Haskell.TH foo, bar :: Int -> Int -> Int foo x $([p| x |] :: PatQ) = x bar $([p| x |] :: PatQ) x = x baz :: Int baz = let { x = 1; $([p| x |] :: PatQ) = 2 } in x foo', bar', baz' :: ExpQ foo' = [| \x $([p| x |]) -> x |] bar' = [| \ $([p| x |]) x -> x |] baz' = [| let { x = 1; $([p| x |]) = 2 } in x |]