Ticket #3447: Bool.hs

File Bool.hs, 358 bytes (added by LysikovVV, 5 years ago)

Example

Line 
1{-# LANGUAGE EmptyDataDecls, TypeFamilies #-}
2
3module Bool where
4
5data F
6data T
7
8class BoolT a where
9        type NotT a
10        choose :: a -> b -> b -> b
11
12instance BoolT F where
13        type NotT F = T
14        choose _ x1 x2 = x1
15
16instance BoolT T where
17        type NotT T = F
18        choose _ x1 x2 = x2
19
20test :: (BoolT a) => a -> b -> b -> b
21test _ x1 x2 = choose (undefined :: (NotT a)) x1 x2
22