http-types 0.3.0 contains a small, but breaking, change:
Christian, I incorporated your approach of defining the ADT, and Michael's suggestions into*tada*http-types 0.2.0 - http://hackage.haskell.org/package/http-types-0.2.0Features:* StdMethod is an enumeration without OtherMethod constructor, containing only RFC 2616 standard HTTP methods.* parseMethod :: ByteString -> Either ByteString StdMethod (I think the type says all).* There are a few pre-defined Headers (headerAccept...)* urlEncode / urlDecode* Parsing and rendering of query strings (Query / SimpleQuery).I hope this is closer to what most people would consider a nice version.Aristid2011/2/4 Christian Maeder <Christian.Maeder@dfki.de>Am 04.02.2011 11:49, schrieb Christian Maeder:
> The disadvantage for just strings are possible spelling errors. WithTherefore just having
> constants or constructors spelling errors are detected by the compiler
> (but you still can confuse constants having the same type).
type Method = ByteString
is also less safe, because constants for methods and i.e. header names
(if they are also just byte strings) can be mixed up without type errors.
Better would be a newtype wrapper around byte strings (or just strings):
newtype Method = M ByteString
But I do not want to interfere with Michael Snoymann's compatibility
issues for wai.
Cheers Christian