When I type this code in Haskell:
data BT a = Empty | Fork a (BT a) (BT a)
Empty :: BT a
Fork :: a -> BT a -> BT a -> BT a
I get
error: parse error on input `::'
I can't see what the issue is though, if I add deriving (show) to the top line, it changes to
error: parse error on input `Empty'
datadefinition. You must not include them.