{-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Stopgap.Data.Ptr where import Foreign.Ptr class IsPtr a where type Tag a toPtr :: a -> Ptr (Tag a) fromPtr :: Ptr (Tag a) -> a data Null = Null instance IsPtr Null where type Tag Null = Null toPtr :: Null -> Ptr (Tag Null) toPtr Null Null = Ptr Null Ptr (Tag Null) forall a. Ptr a nullPtr fromPtr :: Ptr (Tag Null) -> Null fromPtr Ptr (Tag Null) _ = Null Null