GHC.Ptr feels like too low-level a zone for it. If the objections I predicted don't appear, Foreign.Ptr sure seems more logical._______________________________________________On Mon, Aug 17, 2020, 11:07 AM Andrew Martin <andrew.thaddeus@gmail.com> wrote:There is always the possibility of using GHC.Ptr as a home for it instead of Foreign.Ptr. The main reason I would want this in base rather than just some library is that, as a library author, I would never pick up an extra dependency for something that trivial.On Mon, Aug 17, 2020 at 10:52 AM David Feuer <david.feuer@gmail.com> wrote: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 <andrew.thaddeus@gmail.com> wrote:_______________________________________________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 = nullPtrAny here is example of code that becomes more terse once this is available:foo :: IO (Either Error (Ptr Foo))foo = dop <- initialize mySettingsif p == nullPtrthen 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 >>= \caseNull -> 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
---Andrew Thaddeus Martin
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries