
In the context of GHC Haskell, that's definitely the Right Thing. I think
what might concern some people is that pattern synonyms as we know them are
a very GHC thing, while the Ptr business is pretty much Report Haskell.
On Mon, Aug 17, 2020, 10:44 AM Andrew Martin
Foreign.Ptr provides nullPtr. It would make some of my code more terse if this was additionally provided as a pattern synonym. The pattern synonym can be defined as:
{-# language ViewPatterns #-} {-# language PatternSynonyms #-} module NullPointerPattern ( pattern Null ) where import Foreign.Ptr (Ptr,nullPtr) pattern Null :: Ptr a pattern Null <- ((\x -> x == nullPtr) -> True) where Null = nullPtr
Any here is example of code that becomes more terse once this is available:
foo :: IO (Either Error (Ptr Foo)) foo = do p <- initialize mySettings if p == nullPtr then pure (Left InitializeFailure) else pure (Right p)
With the pattern synonym, we are able to take advantage of LambdaCase:
foo :: IO (Either Error (Ptr Foo)) foo = initialize mySettings >>= \case Null -> pure (Left InitializeFailure) p -> pure (Right p)
I'm curious what others think.
-- -Andrew Thaddeus Martin _______________________________________________ Libraries mailing list Libraries@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries