Lambda 函数,该函数以极大值形式返回闭包
我如何定义一个函数来返回一个maxima中的闭包 我的具体例子是: 我有一份表格清单:Lambda 函数,该函数以极大值形式返回闭包,lambda,closures,maxima,Lambda,Closures,Maxima,我如何定义一个函数来返回一个maxima中的闭包 我的具体例子是: 我有一份表格清单: myList : [a = 1, c = 33, d = c+7]; 我想根据等号前的部分排除一个元素 以下是我的尝试: find_a (e) := first(e) = a; temp1 : sublist(myList ,'find_a ); map('second, temp1); //output is "1" 这正是我想要的 因为真正的列表要长得多,我不想复制粘贴代码, 我现在想这样使用它: S
myList : [a = 1, c = 33, d = c+7];
我想根据等号前的部分排除一个元素
以下是我的尝试:
find_a (e) := first(e) = a;
temp1 : sublist(myList ,'find_a );
map('second, temp1);
//output is "1"
这正是我想要的
因为真正的列表要长得多,我不想复制粘贴代码,
我现在想这样使用它:
SearchElement(ElementName) := block(
[res],
res : lambda([x],first(x) = ElementName),
return (res)
);
GetByKey(list_,key_) := block(
[res , finder:SearchElement(key_)],
res : map('second, sublist(list_,'finder),
return (res)
);
GetByKey(myList, a);
// should return "1"
但第一部分已经不起作用了:
SearchElement(a);
// output:
lambda([x],first(x)=ElementName)
// expected output:
lambda([x],first(x)=a)
这个解决方案对我很有效(基于maxima帮助中的“curry”示例,用于
buildq
,请参阅):
例如:
myList : [a = 4, b = 7, c = 5+b]$
ExtractElement(myList, b, identity);
// result: b = 7
ExtractElement(myList, c, second);
// result: b+5
myList : [a = 4, b = 7, c = 5+b]$
ExtractElement(myList, b, identity);
// result: b = 7
ExtractElement(myList, c, second);
// result: b+5