[Haskell-cafe] Best idiom for avoiding Defaulting warnings with
ghc -Wall -Werror ??
Brandon S. Allbery KF8NH
allbery at ece.cmu.edu
Fri Jun 22 18:11:24 EDT 2007
On Jun 22, 2007, at 17:46 , David Roundy wrote:
> -Wall -Werror isn't a seat belt, it's a coding-style guideline.
So, as long as we're on this topic...
I have a program which I'm checking with -Wall but not -Werror,
because it has several pattern matches which *I* know are fine but
which ghc doesn't. (I suspect, from its description, that Catch
would also recognize it's fine.) Which leads me to wonder:
(1) any way to flag a pattern match as "I know this is okay", don't
warn about it" without shutting off pattern match warnings completely?
(2) any way that, given the need to roll a bunch of records into a
single type, I can somehow declare things such that calling one of
these functions that expects only a single component record type with
a different record type raises a *compile-time* error? (That is,
roughly the opposite of the usual pattern match error behavior.)
Unfortunately I can't split the records into independent types
because the full record type controls a state machine and different
states require different components, and I can't use a typeclass to
do it because you can't declare a list of a typeclass (VRow r) =>
[r]. (Yes, this may become an array later, but it's only 25 or so
entries.)
The special cases are where I'm asking the state machine to do
lookups from "files" that are actually things like DNS lookups. Some
of these are passed file-based lookups in order to modify the DNS
lookup's result (domain stripping, for example) and these will (a)
never be invoked with a lookup type other than VDNS and (b) never be
handed a VProcess-based VLookup or a VDNS as the modifier.
--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH
More information about the Haskell-Cafe
mailing list