[web-devel] [Yesod] WAI enhancement: request body size

Felipe Almeida Lessa felipe.lessa at gmail.com
Tue Feb 12 20:50:58 CET 2013


My default used to be using a standard data type and resorting to a
custom one when it seemed that there would be clear advantages.  Now
I've switched my default: write a custom data type and, should you
find a compelling reason, refactor into a standard one.

A custom data type isn't helpful just for documentation purposes.
It's also helpful when reading code, and that's where it shines.  When
you're in the middle of an application code and you see

  case ... of
    ChunkedBody -> ...
    KnownLength ... -> ...

then you instantly know what it's talking about.

Other advantages:

  - Easier to refactor a new case in: just add a new constructor and
fix all warnings.

  - Impossible to use on a wrong function.

  - It may have some advantage on a yet-to-be-written IDE that could
give some more helpful information when needing to write the code as
well (wink, wink!).  Showing documentation about what Nothing and Just
are doesn't help me, and I'd need to somehow fetch the docs of the
record where this field was in... or is it something returned from a
function?

  - It seems to me that most of the time you don't really need all
those convenience functions anyway =).

On Tue, Feb 12, 2013 at 5:36 PM, Johan Tibell <johan.tibell at gmail.com> wrote:
> On Tue, Feb 12, 2013 at 11:33 AM, Erik de Castro Lopo <mle+hs at mega-nerd.com>
> wrote:
>>
>> Felipe Almeida Lessa wrote:
>>
>> > +1 for the idea.
>> >
>> > +2 for using a custom data type: it's *much* easier to read.
>>
>> I'm with Felipe on both counts.
>
>
> Just a casual observations. Using custom types for documentation purposes
> has some upsides, as we know, but there are also lots of downsides in that
> you will have to rewrite lots of standard operations (in this case things
> like fromMaybe, etc). I don't have a hard-and-fast rule, but I tend to try
> to create new types when they add type safety (although I don't always
> follow my own advice).
>
>
> _______________________________________________
> web-devel mailing list
> web-devel at haskell.org
> http://www.haskell.org/mailman/listinfo/web-devel
>



--
Felipe.



More information about the web-devel mailing list