Hi Ondrej, Le jeudi 22 mars 2012 à 11:45 +0100, Ondrej Zajicek a écrit :
One possible way is to write filters as functions (returning true or false) and then use 'where' to create filters: 'import where xxx()', 'show route where ! xxx()'.
This makes me think about why is there a difference between functions and filters in the first place? Yes, functions accept argument, but then? They return a value… a bit like filters return a decision. So, what's really the big difference? In my use of BIRD, I end up like you just suggested, transforming every filter into functions and using “import where …”. This make me return boolean values that are a bit less clear than accept/reject statements. I am definitely not pleased by the choice I have to make between fonction and filter. I am wondering: is there a way to unify both? Do you think it's a good idea? Do you have suggestions on how to do that? (i.e. we should do it in a backward compatible fashion) The way I see it, I would make filter into functions that return booleans, and change 'accept' and 'reject' into “aliases” to 'return true' and 'return false'. Concerning the message attached to them, I don't really know… Make these keywords a bit more specials and make them 'print xxx; return true/false;'? Thanks for any clue on this, -- Benjamin