gpt4 book ai didi

functional-programming - APL 中的条件函数

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

在任何 APL 方言中,是否有条件函数的符号或众所周知的习语?

我确定我遗漏了一些东西,因为它是一种基本的语言元素。在其他语言中,它被称为条件运算符,但我将在此处避免使用该术语,因为 APL 运算符完全是另一回事。

比如C和 friend 有x ? T : FLISP 有 (if x T F)Python 有 T if x else F等等。

我知道现代 APL 有 :If和 friend ,但它们是控制程序流程的命令式语句:它们不返回值,不能在表达式中使用,当然也不能应用于 bool 数组。他们完全有不同的目的,这对我来说很好。

我能想出的唯一合适的表达方式是 (F T)[⎕IO+x] ,这对我来说看起来不是特别速记或可读,尽管它完成了工作,即使是在数组上:

      ('no' 'yes')[⎕IO+(⍳5)∘.>(⍳5)]
no no no no no
yes no no no no
yes yes no no no
yes yes yes no no
yes yes yes yes no

我试图用小队 想出一个类似的表达方式。 ,但在 bool 数组上惨败。即使我可以,它仍然必须嵌入 ⎕IO或硬编码的 1,就可读性而言更糟。

在我继续定义我自己的之前 if并在我将要编写的每个程序中使用它,是否有任何规范?我是否缺少明显的功能或运算符?

(SO 上有没有 APL 程序员?:-)

最佳答案

是的,SO 上有 APL 程序员(但不是很多!)。

我认为答案是这方面没有标准。

对于标量解决方案,我使用“pick”:

  x⊃f t

而对于 bool 数组,我像上面一样使用索引:
f t[x]

我总是使用索引原点零,所以不需要加1,也不需要括号。

如果这些还不够简单,我认为你必须用一个名为“if”的函数来覆盖它们。这也可以让您将真假放入 t f 的可能更自然的排序中。

关于functional-programming - APL 中的条件函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15752895/

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