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 given function: 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 context" 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
pgpcYuhSlSS60.pgp
Description: PGP signature
_______________________________________________ darcs-users mailing list [email protected] http://lists.osuosl.org/mailman/listinfo/darcs-users
