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. Question on terminology (Joel Neely)
2. Re: Question on terminology (Rein Henrichs)
3. Re: general observation about programming (Jeffrey Brown)
----------------------------------------------------------------------
Message: 1
Date: Wed, 2 Mar 2016 16:50:13 -0600
From: Joel Neely <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: [Haskell-beginners] Question on terminology
Message-ID:
<CAEEzXAgs=a5DcuNWM+E-9e9HtBzzDN1s=nbsqr0xmzgqppw...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
IIUC, one would describe fmap as "lifting" a function g into a functor f,
in the sense of
Functor f => (g a b) -> g a -> g b
Is there an inverse concept (? co-lift ?) that describes
Functor f => (g a -> g b) -> a -> b
Similarly is there standard terminology for "distributing" and "gathering"
in the sense of
Functor f => f [a] -> [f a]
and
Functor f => [f a] -> f [a]
respectively?
References much appreciated!
-jn-
--
Beauty of style and harmony and grace and good rhythm depend on simplicity.
- Plato
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20160302/73d663af/attachment-0001.html>
------------------------------
Message: 2
Date: Wed, 02 Mar 2016 23:27:58 +0000
From: Rein Henrichs <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] Question on terminology
Message-ID:
<CAJp6G8zqdupn9srEmg=4+jyl4aj3cmtoxms1stecq1npmj_...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
"Co-lift" is not possible for functors generally. Comonads have a method
extract :: Comonad w => w a -> a, which is somewhat related.
Distributing and gathering are both really distributing. The first example
distributes [] over f while the second example distributes f over [].
Neither are possible for functors generally, but Applicative and
Data.Traversable are strong enough to provide sequenceA :: (Traversable t,
Applicative f) => t (f a) -> f (t a). The problem is that the Applicative
and Traversable laws alone are not enough to guarantee that this is well
behaved.
What you actually need is a stronger notion that f (g a) is an
"f-structure" containing "g-structures" *all of the same shape*. If they
aren't, the inner structures won't be distributed properly and some of the
odd shaped bits might get cut off. For example, try to transpose a list of
lists (iow, distribute [] over []) and you'll see that all of the inner
lists must be the same length for your transposition to be well behaved.
Conor McBride covers this in a very interesting way in this StackOverflow
answer: http://stackoverflow.com/a/13100857/2225384
On Wed, Mar 2, 2016 at 2:50 PM Joel Neely <[email protected]> wrote:
> IIUC, one would describe fmap as "lifting" a function g into a functor f,
> in the sense of
>
> Functor f => (g a b) -> g a -> g b
>
>
> Is there an inverse concept (? co-lift ?) that describes
>
> Functor f => (g a -> g b) -> a -> b
>
>
> Similarly is there standard terminology for "distributing" and "gathering"
> in the sense of
>
> Functor f => f [a] -> [f a]
>
>
> and
>
> Functor f => [f a] -> f [a]
>
>
> respectively?
>
> References much appreciated!
> -jn-
>
> --
> Beauty of style and harmony and grace and good rhythm depend on
> simplicity. - Plato
> _______________________________________________
> 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/20160302/c79f453a/attachment-0001.html>
------------------------------
Message: 3
Date: Wed, 2 Mar 2016 18:01:22 -0800
From: Jeffrey Brown <[email protected]>
To: The Haskell-Beginners Mailing List - Discussion of primarily
beginner-level topics related to Haskell <[email protected]>
Subject: Re: [Haskell-beginners] general observation about programming
Message-ID:
<CAEc4Ma2rXWrntQ153=jjebmzuhhf5vcegeewhzaahxu0ycz...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"
An even more convenient (when applicable) guide to pronunciation:
https://wiki.haskell.org/Pronunciation
On Sun, Feb 28, 2016 at 4:51 PM, Jeffrey Brown <[email protected]>
wrote:
> That will work in the special case of lists, but there are all sorts of
> other things you might want to map across.
>
> On Sat, Feb 27, 2016 at 7:24 PM, Rustom Mody <[email protected]>
> wrote:
>
>>
>>
>> On Sun, Feb 28, 2016 at 2:26 AM, Jeffrey Brown <[email protected]>
>> wrote:
>>
>>> It is, I agree, not appropriate everywhere, but point-free code can in
>>> the right place be much more readable. Maps are a good example. Compare:
>>>
>>> map (f . g . h) xs
>>>
>>> to
>>>
>>> map (\x -> f $ g $ h x) xs
>>>
>>
>> Not quite a fair comparison
>> How about?
>> [ f (g (h x)) | x <- xs ]
>>
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> [email protected]
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>
>>
>
>
> --
> Jeffrey Benjamin Brown
>
--
Jeffrey Benjamin Brown
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://mail.haskell.org/pipermail/beginners/attachments/20160302/1cb9085a/attachment-0001.html>
------------------------------
Subject: Digest Footer
_______________________________________________
Beginners mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
------------------------------
End of Beginners Digest, Vol 93, Issue 2
****************************************