[Haskell-cafe] Type level variants
Brian Hurt
bhurt at spnz.org
Tue Feb 27 18:32:10 UTC 2018
No, and thank you and astrohavoc at gmail.com for pointing it out. I was
going "There *has to be* a better solution to this".
On Tue, Feb 27, 2018 at 3:10 PM, Tom Ellis <
tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk> wrote:
> On Tue, Feb 27, 2018 at 02:53:33PM +0000, Brian Hurt wrote:
> > I'm looking for pointers on how to do something. What I'm trying to do:
> I
> > want to define a newtype wrapper for database connections with a phantom
> > type to control whether the connection is read-only or read-write. So I
> > have:
> >
> > newtype Conn a = Conn { unConn :: Connection }
> >
> > data ReadOnly = ReadOnly
> >
> > data ReadWrite = ReadWrite
> >
> > -- Simplifying here
> > openConn :: MonadIO m => a -> Conn a
> >
> > query :: (MonadIO m, ToRow r, FromRow s) => Conn a -> Query -> r -> m
> > [s]
> >
> > execute :: (MonadIO m, ToRow r) => Conn a -> Query -> r -> m Int64
> >
> > But I want to be able to restrict the type a to be either ReadOnly or
> > ReadWrite. Solutions I've come up with so far are:
> [...]
> > Are their alternatives I haven't considered yet?
>
> Have you considered
>
> {-# LANGUAGE DataKinds #-}
>
> data Read = ReadOnly | ReadWrite
>
> ?
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180227/d8e40731/attachment.html>
More information about the Haskell-Cafe
mailing list