Send Beginners mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1.  Tagged types (PICCA Frederic-Emmanuel)
   2. Re:  Tagged types (Francesco Ariis)
   3. Re:  Tagged types (PICCA Frederic-Emmanuel)
   4. Re:  Tagged types (Steven Leiva)
   5. Re:  Tagged types (David McBride)
   6. Re:  Tagged types (Francesco Ariis)


----------------------------------------------------------------------

Message: 1
Date: Tue, 2 Oct 2018 16:48:09 +0000
From: PICCA Frederic-Emmanuel
        <[email protected]>
To: "The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell" <[email protected]>
Subject: [Haskell-beginners] Tagged types
Message-ID:
        
<a2a20ec3b8560d408356cac2fc148e53015b331...@sun-dag3.synchrotron-soleil.fr>
        
Content-Type: text/plain; charset="us-ascii"

Hello


suppose that I have a bunch  of type like this

data Unchecked
data Hdf5
data Cbf

data A t > A String

The A thing come from a database as A Unchecked

now if I read the String and it ends with  .h5, I have a A Hdf5 type
and If the string end with .cbf, I have a A Cbf.

So I would like a function which allow to return a A Hdf5 or a A Cbf depending 
on the String content.

check :: A Unchecked -> A ???
check = ???

Is it possible to do this ?

Thanks

Frederic

PS: At the end I will have more tha one tag.


------------------------------

Message: 2
Date: Tue, 2 Oct 2018 18:56:48 +0200
From: Francesco Ariis <[email protected]>
To: [email protected]
Subject: Re: [Haskell-beginners] Tagged types
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii

Hello Frederic,

On Tue, Oct 02, 2018 at 04:48:09PM +0000, PICCA Frederic-Emmanuel wrote:
> So I would like a function which allow to return a A Hdf5 or a A Cbf 
> depending on the String content.
> 
> check :: A Unchecked -> A ???
> check = ???
> 
> Is it possible to do this ?

I believe you can do this with GADTs [1]

[1] https://en.wikibooks.org/wiki/Haskell/GADT


------------------------------

Message: 3
Date: Tue, 2 Oct 2018 17:04:42 +0000
From: PICCA Frederic-Emmanuel
        <[email protected]>
To: "The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell" <[email protected]>
Subject: Re: [Haskell-beginners] Tagged types
Message-ID:
        
<a2a20ec3b8560d408356cac2fc148e53015b331...@sun-dag3.synchrotron-soleil.fr>
        
Content-Type: text/plain; charset="us-ascii"

> I believe you can do this with GADTs [1]

I can create different constructors for the different types.
but how can I create a function which return different type ?


Fred

------------------------------

Message: 4
Date: Tue, 2 Oct 2018 12:18:14 -0500
From: Steven Leiva <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Tagged types
Message-ID:
        <CA+=wos6+lma5_a70yugfh_hfl78f4fxvhjchkfidss4ovmw...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Unfortunately I do not know the fancy Haskell type-level stuff, but if I
was looking at this same problem, I'd think you need a sum type:

data Unchecked = Unchecked String
data Checked = Hd5 String | Cbf String

check :: Unchecked -> Checked

There is likely a better concept than "Checked" in your domain. I do not
know what those things represent, but I would use that *ubiquitous
language* instead
- i.e., data Image ... instead of Checked.



On Tue, Oct 2, 2018 at 12:05 PM PICCA Frederic-Emmanuel <
[email protected]> wrote:

> > I believe you can do this with GADTs [1]
>
> I can create different constructors for the different types.
> but how can I create a function which return different type ?
>
>
> Fred
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>


-- 
Steven Leiva
305.528.6038
[email protected]
http://www.linkedin.com/in/stevenleiva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20181002/11ec17f6/attachment-0001.html>

------------------------------

Message: 5
Date: Tue, 2 Oct 2018 13:27:20 -0400
From: David McBride <[email protected]>
To: Haskell Beginners <[email protected]>
Subject: Re: [Haskell-beginners] Tagged types
Message-ID:
        <can+tr417ajanyp1ohkeboed4uuwr60qgtuxwvb5kjkepwmd...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

You need to have some sort of either type.

check :: A Unchecked -> Either (A Hdf5) (A Cbf)

But you'll have to deal with the fact that it could be either of those
things throughout the rest of your program, somehow.

Another way would be to have

data CheckedType = Hdf5 | Cbf

check :: A Unchecked -> A CheckedType

But this has the same downside.

There may be some way with the singletons library, but I think that is out
of the scope of the newbies list.

On Tue, Oct 2, 2018 at 1:04 PM PICCA Frederic-Emmanuel <
[email protected]> wrote:

> > I believe you can do this with GADTs [1]
>
> I can create different constructors for the different types.
> but how can I create a function which return different type ?
>
>
> Fred
> _______________________________________________
> Beginners mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20181002/94df7526/attachment-0001.html>

------------------------------

Message: 6
Date: Wed, 3 Oct 2018 14:21:35 +0200
From: Francesco Ariis <[email protected]>
To: [email protected]
Subject: Re: [Haskell-beginners] Tagged types
Message-ID: <[email protected]>
Content-Type: text/plain; charset=us-ascii

On Tue, Oct 02, 2018 at 05:04:42PM +0000, PICCA Frederic-Emmanuel wrote:
> > I believe you can do this with GADTs [1]
> 
> I can create different constructors for the different types.
> but how can I create a function which return different type ?

Mhhh I tried to come up with an example (GADTs, ExistentialQuantification,
etc.) and failed...

This is an interesting problem and one that could interest many people;
please post your question on -cafe too (with a minimal .hs, it always
helps); I am curious on how they will approach the problem

-F



------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 124, Issue 2
*****************************************

Reply via email to