packages feed

Hoed-0.1.0.0: examples/TH-hello.hs

{-# LANGUAGE TemplateHaskell, Rank2Types #-}
import Debug.Hoed.Observe

data T = Hello | World

f :: T -> T
f Hello = World
f World = Hello

p :: T -> String
p Hello = "Hello"
p World = "world"

$(observedTypes "f" [[t| T |]])
main = runO . putStrLn $ (p . f') Hello
  where f' = $(observe "f") f