> 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.
I believe the main use is for embedded DSLs. I'm afraid I don't have any practical examples on hand to link to.
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.