On Mar 14, 2007, at 8:40 PM, Eithon Cadag wrote:

Hi all,

Is binding a lambda function to a variable, and then using that function, possible in Jess?


You know, I don't think there *is* a way to do this. You can use the "map" function, but you'll get back the answer inside a list, which isn't terribly convenient. The "apply" function should be modified to handle lambdas as well as names. Here's a version of "apply" which does the right thing:

--------------------------------------------------------------
class Apply implements Userfunction, Serializable {
    public String getName() {
        return "apply";
    }

public Value call(ValueVector vv, Context context) throws JessException {
        Userfunction uf = vv.get(1).functionValue(context);
        ValueVector args = new ValueVector();
        args.add(uf.getName());
        for (int i = 2; i < vv.size(); i++)
            args.add(vv.get(i));
        return uf.call(args, context);
    }
}
--------------------------------------------------------------

Then (apply ?fnc 2) would return "4".

---------------------------------------------------------
Ernest Friedman-Hill
Advanced Software Research          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 [EMAIL PROTECTED]
Livermore, CA 94550                 http://www.jessrules.com

--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to