一种默认使用连词和副词的方法?

A way to use conjunctions and adverbs tacitly?

这是一个朴素的斐波那契数列:

   (,[:+/_2&{.)^:10]0 1      NB. 10 + 2 elements
0 1 1 2 3 5 8 13 21 34 55 89

这是它的显式 monadic 版本:

   3 :'(,[:+/_2&{.)^:y 0 1' 10
0 1 1 2 3 5 8 13 21 34 55 89

问题是: 在默认定义中,我能否以某种方式为 ^: 连词提供最右边的参数,以便(脱离我的头脑):

   ((,[:+/_2&{.)^:y 0 1)10
0 1 1 2 3 5 8 13 21 34 55 89

会产生预期的结果吗?或者,更正确的定义(再一次,脱离我的头脑):

   ((,[:+/_2&{.)^:(y-2)1 1)10
1 1 2 3 5 8 13 21 34 55

更一般地说: J 中的副词和连词是否可以默认定义,或者只有明确定义才有可能?

我的直觉(和 this 问题中的 material)告诉我,我应该去黑暗的一面,学习更多关于动名词和 ` / `: 连词的知识.那是对的吗?如果是这样,我将不胜感激任何新手友好 material :)

我认为我的自然方法是创建一个二元动词,其中左侧参数是迭代次数,右侧参数是初始字符串。这使我可以轻松地扩展字符串。

fib0=: (,[:+/_2&{.)@]^:[ 
   10 fib0 0 1
0 1 1 2 3 5 8 13 21 34 55 89
   11 fib0 0 1
0 1 1 2 3 5 8 13 21 34 55 89 144

我可以通过将 (,[:+/_2&{.) 作为左参数填充到 ^:10 作为左参数来创建一个单子动词。不过在扩展字符串时不太灵活。

  fib1=: (,[:+/_2&{.)^: 10
   fib1 0 1
0 1 1 2 3 5 8 13 21 34 55 89

我最终通过在定义中附加 0 1 并创建一个寻找迭代次数的单子动词来伪造您可能正在寻找的结果。

  fib2=: ((,[:+/_2&{.)@](^: [))& 0 1
   fib2 10
0 1 1 2 3 5 8 13 21 34 55 89
   fib2 11
0 1 1 2 3 5 8 13 21 34 55 89 144

但是你想知道是否有一种方法可以默认使用副词来做到这一点。按照我上面显示的内容,您可以通过在左侧添加动词 (,[:+/_2&{.) 来从连词 ^: 创建一个副词。

   afib=: (,[:+/_2&{.) ^: 
   (10 afib)                 NB. an adverb takes its left argument creating a conjunction.
(, ([: +/ _2&{.))^:10
   (10 afib) 0 1
0 1 1 2 3 5 8 13 21 34 55 89
   (11 afib) 0 1
0 1 1 2 3 5 8 13 21 34 55 89 144