有人使用 JSL 进行函数式编程吗?有人使用函数式编程编写 JSL 吗?如果有,您是否有使用的一组标准函数?
例如,下面的简化映射函数完成了 for 循环的所有工作,因此您只需指定一个表达式和一个列表,该函数就会返回一个列表,其中包含为每个元素计算的函数。 在 R 中,可以在包中找到类似的函数及其变体'咕噜'作者:莱昂内尔·亨利和哈德利·威克姆。
// A function to evaluate an expression for each item in a list
//
// x__ A list
// fn__ An expression containing ___ (three underscores) that
// is replaced with each element of x__
//
// Returns a list the same length as x__.
//
map = function( {x__, fn__},
r__ = {};
for(i__ = 1, i__ <= N items( x__ ), i__++,
r__ = Insert( r__, Eval( substitute(Name Expr( fn__ ), Expr(___), Expr( x__[i__] ) ) ) );
);
return(r__);
);
//Data to evaluate
vals = { 1, 2, 3, -3, -2, 0.5, -1.1, 5.3, 2.7, 0 };
//number of entries above zero
map( vals, Expr( ___ > 0 ) );
//sum of fractional parts
sum( map( vals, Expr( Mod( ___, 1 ) ) ) );
回复:有人使用 JSL 进行函数式编程吗?非常感谢 :)
改造每一个。
回复:有人使用 JSL 进行函数式编程吗?JMP 16 中引入了三个函数,可以通过本机函数来实现此目的。 它们感觉与其他语言不同,但同样“功能性”(嘲笑我自己的双关语):
For Each() //Do something for each member - similar to apply
Transform Each() //Calculate something for each member - similar to map
Filter Each() //Return members for which a condition is true - similar to filter
在此帮助文件中查找有关这些函数的更多信息:
https://www.jmp.com/support/help/en/17.1/index.shtml#page/jmp/conditional-and-logic-functions.shtml#ww10169888
回复:有人使用 JSL 进行函数式编程吗?与此同时,有没有一个地图函数现在可以直接在 Jmp 中使用吗?
太有用了!
https://reference.wolfram.com/language/ref/Map.html
回复:有人使用 JSL 进行函数式编程吗?我需要花一些时间使用您的库,因为这些功能的工作方式与我习惯的有点不同,但这很棒,感谢您的分享!毫无疑问,你刚刚节省了我很多时间!
回复:有人使用 JSL 进行函数式编程吗?有趣的是,你问的问题是,几个月前我已经实现了类似的东西,当时认为它可能对其他人有用。 我刚刚在这里发布: https://community.jmp.com/t5/JMP-Scripts/MFR-a-Functional-Programming-Library-for-JSL/ta-p/47803
希望对你有帮助。
顺便说一句,我更喜欢使用匿名函数而不是表达式,尽管我必须根据我试图解决的问题在它们之间进行切换。
回复:有人使用 JSL 进行函数式编程吗?存储的 if 函数有点作弊,这就是为什么我把它列在第二位的原因。 该函数解析列表以生成 if 语句,然后将该 JSL 写入文件,然后将其包含在程序中。
我尝试了一个动态创建 if 语句的函数,但性能受到很大影响,而且我意识到代码非常静态,因此更容易存储生成的 if 函数然后使用它。回复:有人使用 JSL 进行函数式编程吗?如何将要计算的代码传递给存储的 if 函数?今天我同时使用表达式或函数,但我计划今后对一组进行标准化。
评估另一个函数的示例映射函数:
map = function( {x, fn},
r = {};
for(i = 1, i <= N items( x ), i++,
r = Insert( r, fn( x[i] ) );
);
return(r);
);
//Anonymous function
map({1, 2, 3}, function({n}, n/2));
//Named function
foo = function( {v}, v * 2 );
map({1, 2, 3}, Expr( foo ) );回复:有人使用 JSL 进行函数式编程吗?我已经使用了这种方法,并且具有从数据表生成动态日志、将表转换为嵌套列表并再次转换回来以及生成 UI 对话窗口的功能。
我还使用 JSL 来编写我经常使用的复杂 if 函数(列出条件、true 时的状态更改以及不再 true 时的状态更改(可选)),因为我厌倦了调试我的拼写错误。