{-# LANGUAGE DataKinds, TypeFamilies #-} data State (s :: Bool) = State deriving Show off :: State False off = State type family TurnOff s where TurnOff True = False turnOff :: State True -> State False turnOff State = State bad = turnOff off main = print bad