相关疑难解决方法(0)

APL中的条件函数

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

我确定我错过了一些东西,因为它是一种基本的语言元素.在其他语言中,它被称为条件运算符,但我会在这里避免使用该术语,因为APL运算符完全是另一回事.

例如C和朋友有x ? T : F
LISP有(if x T F)
Python T if x else F
等等.

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

我可以用来做功能选择的唯一合适的表达方式是(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
Run Code Online (Sandbox Code Playgroud)

我试图用小队提出类似的表达方式?,但在布尔阵列上惨遭失败.即使我可以,它仍然必须嵌入?IO或硬编码1,就可读性而言更糟糕.

在我继续定义自己if并在我将要编写的每个程序上使用它之前,有什么经典吗?我错过了一个明显的功能或操作员吗?

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

functional-programming apl conditional-operator

7
推荐指数
4
解决办法
1591
查看次数