packages feed

PartialTypeSignatures-0.1.0.0: Example.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}
module Example where
import Control.Monad
import PartialTypeSigs
import Language.Haskell.TH


#if __GLASGOW_HASKELL__ > 707
sigs
    [| ["f1" :: a -> b -> (a, Int),
        "f1" :: b -> a -> (Char, a) ] |]

f1 x y | False = $(unionSigs [| f1 x y |])
f1 x y = undefined -- (x,y)
#endif


sigs [| do
  let f2 = undefined
  Just
    ( f2 :: a -> b -> (a, Int),
      f2 :: c -> d -> (Char, d)
    )
  |]
  
f2 x y | False = $(unionSigs [| f2 x y |])
f2 x y = undefined -- (x,y)