Ticket #1754: TypeEq.hs

File TypeEq.hs, 450 bytes (added by guest, 6 years ago)
Line 
1{-# LANGUAGE OverlappingInstances, UndecidableInstances #-}
2module Data.TypeEq (
3    -- * Type equality
4    TypeEq,
5    typeEq
6) where
7    -- Data
8    import Data.Boolean
9
10    class TypeEq type1 type2 result | type1 type2 -> result where
11        typeEq :: type1 -> type2 -> result
12
13    instance TypeEq soleType soleType True where
14        typeEq _ _ = true
15
16    instance (result ~ False) => TypeEq type1 type2 result where
17        typeEq _ _ = false