[Haskell-cafe] Better writing about Haskell through multi-metaphor learning

David Feuer david.feuer at gmail.com
Sun Sep 19 23:14:33 UTC 2021


Neither is really wrong. Degrees are strange, an artifact of the Babylonian
system with no real mathematical significance. Radians are perfectly fine,
and mathematically preferable, but measurements in radians typically have
to be given as multiples of some transcendental number. Traditionally, that
number is Ο€. Didactically, it's probably better to use 𝜏 = 2Ο€, which in
context can be pronounced "turns". You don't have to tell a child about the
"radians" part till they're ready, and don't have to confuse them with 360
anythings. Just teach important angles like 𝜏, ½𝜏, ¼𝜏, β…›πœ, β…™πœ, and
(1/12)𝜏.

Bringing this back to the Haskell context, it's nice to find a way to avoid
lying without needing to tell all of the truth to someone who's not ready.

On Sun, Sep 19, 2021, 6:50 PM Mig Mit <migmit at gmail.com> wrote:

> Now I'm confused. How are degrees or radians "wrong"?
>
> Sent from my iPad
>
> On 2021. Sep 20., at 0:34, David Feuer <david.feuer at gmail.com> wrote:
>
> ο»Ώ
> Best of all is to avoid being too wrong in your teaching. No, don't teach
> children radians, but don't teach them degrees either (except on the side).
> Teach them *turns*, and later explain that a degree is 1/360th of a turn,
> and still later that a radian is 1/(2Ο€) turns.
>
> On Sun, Sep 19, 2021, 5:07 PM Richard Eisenberg <lists at richarde.dev>
> wrote:
>
>> Other understandings of informal terms will differ, but here is how I see
>> it:
>>
>> * "Workflow" applies equally well to Monad as to Arrow. Both capture the
>> idea of information flowing from one computation to the next.
>>
>> * "Programmable semicolon" seems a better fit for Monad than for Arrow.
>> In C, I can say:
>>
>> > int result = do_some_thing();
>> > if (result > 10)
>> >   big_result();
>> > else
>> >   small_result();
>>
>> That is, the future flow of my computation can depend on an earlier
>> result. This is possible with Monad but not with Arrow. So, if I had
>> thought that Arrow was a programmable semicolon, I would have felt
>> short-changed a bit when actually learning what Arrow was.
>>
>> Popping up a level: for me, the value in these ideas is not their
>> precision, but rather their familiarity. Give me intuition first,
>> correctness later.
>>
>> Sidenote (please feel free to skip!): In later secondary school and
>> throughout university, I kept learning things that refined earlier
>> knowledge -- indeed suggesting that earlier knowledge was wrong. For
>> example, radians are *much* more convenient to work with than degrees,
>> which are kind of ridiculous. I resolved then that I would teach my kids
>> how to measure angles in radians from the start: why bother with the
>> inferior unit? Now I have a daughter, who is learning degrees. Why? Because
>> degrees are simpler to start with: we can describe a circle or a right
>> angle without any irrational numbers! So, we build intuition with degrees,
>> and then she'll switch to radians when the time comes. Another example: we
>> now know that object do not accelerate parabolically under the influence of
>> gravity, because of general relativity. But general relativity is hard, so
>> we still teach about parabolic curves for objects in freefall. Once a
>> student knows more physics, they can return and refine their knowledge.
>>
>> So can it be with Haskell. We sometimes get so caught up in being "right"
>> and precise, that we forget that it is sometimes useful to paper over some
>> details for the sake of intuition. This means we sometimes have to say
>> "wrong" things. (For example, I have said that "IO Int" is just an Int
>> tagged with a flag that says the function can do I/O and must be written
>> with do-notation.) But if the goal is learning, sometimes the "wrong" thing
>> is the right thing.
>>
>> Richard
>>
>> > On Sep 18, 2021, at 4:00 AM, Tom Ellis <
>> tom-lists-haskell-cafe-2017 at jaguarpaw.co.uk> wrote:
>> >
>> > On Sat, Sep 18, 2021 at 11:56:37AM +0900, Michael Turner wrote:
>> >> Workflow is a metaphor at one useful level. "Programmable semicolon"
>> >> is a metaphor at another useful level.
>> > [...]
>> >> "Workflow" helped me. And now "programmable semicolon" is helping a
>> >> little, in another way.
>> >
>> > What troubles me about "workflow" and "programmable semicolon" is the
>> > question of whether they also apply to Arrow[1].
>> >
>> > * If they do, then in what sense can "workflow" and "programmable
>> >  semicolon" said to help with understanding of *Monad*?
>> >
>> > * If they don't, then why not?  I don't see it.
>> >
>> > One possible answer is that they do, but those descriptions are only
>> > intended to improve understanding about purpose not about technical
>> > details (I think this is what Michael is suggesting).
>> >
>> > Tom
>> >
>> >
>> >
>> > [1]
>> https://www.stackage.org/haddock/lts-17.7/base-4.14.1.0/Control-Arrow.html
>> > _______________________________________________
>> > 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.
>>
>> _______________________________________________
>> 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.
>
> _______________________________________________
> 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/20210919/6b6b237b/attachment.html>


More information about the Haskell-Cafe mailing list