Hacker News new | ask | show | jobs
by lpw25 4185 days ago
> Also, has anyone ever used gadts to implement type safe syntax trees like that?

I believe the main use is for embedded DSLs. I'm afraid I don't have any practical examples on hand to link to.

1 comments

Consider an HTTP request. A get can't have a body, a post can.

So you could define

    data Request b where
      GET :: Headers -> Request ()
      POST :: Headers -> body -> Request body
As the article says, building up your intuition is the hard bit.

You could go further by typing the headers to recognize the type of body you're dealing with.