[Haskell-cafe] Re: Are there standard idioms for lazy, pure error
handling?
wren ng thornton
wren at freegeek.org
Mon Dec 7 23:49:45 EST 2009
Nicolas Pouillard wrote:
> Excerpts from Henning Thielemann's message of Mon Dec 07 20:36:27 +0100 2009:
>> @Apfelmus:
>>
>> For practical purposes I think Train should have swapped type parameters
>> in order to make Functor act on the type of the list elements.
>>
>>
>> data Train b a = Wagon a (Train b a)
>> | Loco b
>
> The functor on the Loco/Caboose makes sense too and swapping the arguments
> is less natural to read.
Indeed, Train is a bifunctor. Choosing one over the other is as
arbitrary as choosing one over the other for (,) or Either. The only
difference here is that the two functors aren't "the same". There are
reasons for wanting both instances depending on how the structure is
being used.
It's times like this that I wish Haskell had real type-level functions,
at least for swap and compose, without the need for newtype wrappers or
type-family peculiarities.
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list