【发布时间】:2017-12-10 10:37:39
【问题描述】:
在任何 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
我尝试使用小队⌷ 提出类似的表达式,但在布尔数组上惨遭失败。即使可以,它仍然必须嵌入 ⎕IO 或硬编码的 1,就可读性而言,这更糟糕。
在我继续定义我自己的if 并在我将要编写的每个程序上使用它之前,是否有任何规范?我是否缺少明显的功能或运算符?
(SO 上有没有 APL 程序员?:-)
【问题讨论】:
标签: functional-programming conditional-operator apl