I'm playing with the requirements processing at the moment because I'm getting confused by "isnan" being used by not sucking in the <cmath> header file.
At present, failed requirements are simply ignored. Basically, if you require X than all the X inserts are generated, but the set of such inserts can be empty. This is useless: you can make a spelling mistake and all you see is some mysterious C++ error that something is missing. There are two other ways to treat failed requirements. A second mysterious way is: drop the symbol with the requirement silently. The sane way is: reject the program with a diagnostic. Dropping the symbol isn't entirely insane though: fun windows .. requires WIN32; fun windows .. requires UNIX; now "windows" will work on either WIN32 or UNIX without a duplicate definition: the other way is: if WIN32 do fun .. else fun .. done; Actually, "requires" is a bit of a misnomer, it's more like "depends", whereas the "windows" example is more like "requires". So we actually could have something like .. when WIN32 Anyhow, I have to decide. Also there's a hidden bug: processing file ab.flx I get: header aaa = "#include <cmath>"; fun f:int -> int = "1" requires aaa,bbb; println$ f 2; BIND REQS Seek tag _rqs_ab Zero entry BIND REQS Seek tag bbb Zero entry Seek tag aaa Seek tag _rqs_ab Zero entry So it isn't just "bbb" that isn't found here, also _rqs_ab is missing (that's the top level module). -- john skaller skal...@users.sourceforge.net ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language