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