data Plain = Plain data Encrypted = Encrypted newtype Message a = Message ByteString deriving (Show, Eq) encrypt :: Message Plain -> Message Encrypted encrypt m = ...