gpt4 book ai didi

j - 我如何定义一个 monadic 函数来处理 J 中的列表?

转载 作者:行者123 更新时间:2023-12-04 14:43:09 24 4
gpt4 key购买 nike

假设我有以下 J 表达式:

# 3 ((|=0:)#]) 1+i.1000

这计算了 1 到 1000 之间可以被 3 整除的数字的个数。(现在,在有人指出有更简单的方法来做到这一点之前,这个问题是关于 J 的语法,而且不是数学。)

假设我为此定义了一个单子(monad)函数,如下所示:

f =: monad define# y ((|=0:)#]) 1+i.1000)

这对于单个参数非常有效,例如,

    f 4250

如果我传递一个列表,我得到一个长度错误:

    f 1 2 3|length error: f

现在,我完全明白为什么会出现长度错误了。当您用列表 1 2 3 替换 monad 的 y 参数时,您会得到:

# 1 2 3 ((|=0:)#]) 1+i.1000

如果您对 J 有所了解,就会很清楚为什么会出现长度错误。所以,我不需要对此进行解释。

我想定义这个函数,当我传递一个列表时,它返回一个列表,例如,

   f 1 2 31000 500 333

我怎样才能 (a) 重新定义此函数以获取一个列表并返回一个列表,或者 (b) 使该函数按原样处理列表而无需重新定义,也许使用一些副词或其他技术?

最佳答案

我建议使用更简单的方法将动词定义为等级零。使用您提供的动词,这是一种简单的方法:

   f =: monad define "0
# y ((|=0:)#]) 1+i.1000
)

f 1 2 3
1000 500 333

唯一的变化是在“定义”一词之后添加了 "0

关于j - 我如何定义一个 monadic 函数来处理 J 中的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2869487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com