[darcs-users] ratification (haskell_policy / hlint)
kowey at darcs.net
Wed Sep 2 13:11:51 UTC 2009
On Tue, Sep 01, 2009 at 10:55:36 -0400, Gwern Branwen wrote:
> I see the point fine; you are guarding against a small edgecase that I
> don't think will ever happen, using a mechanism that is quite complex
> and unusual. I don't think the former is worth the latter - given that
> the banned functions are things like 'hGetContents' which are usually
> used only once per executable...
It's all about tradeoffs, right? Here it looks like ugliness and
complexity VS. granularity and transparency. Personally, I think we
should use a explicit ratification mechanism.
For those of you who are lost in this thread, the context is that
we want to get rid of our cobbled-together haskell_policy script and use
hlint instead. For banned functions, we need to make exceptions where
use of banned functions is acceptable. One proposal is to use a 'Ratify'
wrapper module. An alternative approach is to use a feature in hlint
(pointed out by Neil) which lets us ignore specific violations in any
ignore "hGetContents" = Darcs.External.pipeDoc
Granularity: We've touched on the fact that the 'ignore' mechanism does
not catch cases where a forbidden function is used more than once in a
given function. The explicit ratification mechanism would force us to
ratify each and every use.
Transparency: Explicit ratification is more transparent; you get
something baked right into the source file "yes, this is a banned
function, but we are using it because it's acceptable in this specific
I'd like this to be settled by consensus if possible. But you know
where I stand if this keeps dragging out.
Eric Kow <http://www.nltg.brighton.ac.uk/home/Eric.Kow>
PGP Key ID: 08AC04F9
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 194 bytes
Desc: not available
More information about the darcs-users