packages feed

lean-0.0.0.1: Lean/Wrapper.hs

module Lean.Wrapper where

import Foreign

class Drop a where
    drop :: FunPtr (Ptr a -> IO ())

newtype Wrapper a = Wrapper { unwrap :: ForeignPtr a }
  deriving (Show)

wrap :: Drop a => Ptr a -> IO (Wrapper a)
wrap = fmap Wrapper . newForeignPtr drop