J是一门很棒的编程语言,我决定学习它.作为一个简单的练习,我决定模仿一个范围.有一个内置函数i.
可以创建一个范围0..i-1
.使用一些数学,我认为这是之间的范围a
和b
:
a + i. (b - a - 1)
Run Code Online (Sandbox Code Playgroud)
成功!我想.现在,转换为动词的"简单"任务摆在我面前.这是我现在的问题.我a
在动词的两边都调用了(左边的参数)+
.我想过使用evoke,但我不确定如何使它工作.
所以我的问题是:我如何将形式的表达式,a f (a g b)
或者更具体地说,a f (a g b h c)
(和类似的形式)转换为纯动词?我不想使用明确的论点,因为它有什么乐趣?;)
编辑我的解决方案如下:
range =: [(+i.)>:@-~
Run Code Online (Sandbox Code Playgroud)
要将表单的表达式转换x f (x g y)
为x h y
您的形式,可以使用二元叉:
x (F G H) y = (x F y) G (x H y)
Run Code Online (Sandbox Code Playgroud)
和身份动词:x [ y = x
,制作:
x ([ f g) y = (x [ y) f (x g y) = x f (x g y)
Run Code Online (Sandbox Code Playgroud)
所以你要找的动词是 h =: [ f g