假设我有以下 J 表达式:
# 3 ((|=0:)#]) 1+i.1000
这计算了 1 到 1000 之间可以被 3 整除的数字的数量。(现在,在有人指出有更简单的方法之前,这个问题是关于J 的语法,而不是数学。)
假设我为此定义了一个单子函数,如下所示:
f =:单子定义 # y ((|=0:)#]) 1+i.1000 )
这适用于单个参数,例如,
f 4 250
如果我传入一个列表,我会收到一个长度错误:
f 1 2 3 |长度错误:f
现在,我完全理解了为什么会出现长度错误。当您将列表替换为monad1 2 3
的参数时,您会得到:y
# 1 2 3 ((|=0:)#]) 1+i.1000
如果您对 J 有所了解,就会很清楚为什么会发生长度错误。所以,我不需要解释。
我想定义这个函数,这样当我传递一个列表时,它会返回一个列表,例如,
f 1 2 3 1000 500 333
我怎样才能(a)重新定义这个函数来获取一个列表并返回一个列表,或者(b)让函数按原样在列表上工作而不被重新定义,也许使用一些副词或其他技术?