- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想定义一个带有单个参数的匿名函数向量,然后映射一个参数 x
穿过这个向量,返回 f(x)
的结果数组对于每个索引。这在 Dyalog 中可能吗?
我问是因为我天真地尝试创建这样一个闭包向量:
fs ← {⍵×2} {⍵×4} {⍵×8}
fs
的单个索引似乎引用了所有这些并且输出乱码:
fs[1]
∇{⍵×2}
∇ ∇{⍵×4}
∇ ∇{⍵×8}
∇ [ 1
⍴fs
返回类似的输出而不是 3,这让我相信我根本没有创建数组。解决这个问题的正确方法是什么?
最佳答案
不幸的是,这在 Dyalog 中是不可能的。你在那里做的确实不是一个数组,一个fgh-fork ,这是一串函数 f g h
那,当像 (f g h)Y
这样被单调地调用时, 表现得像 (f Y)g h Y
.如果左括号 ( [
) 的正左侧有一个函数而不是数组,那么这不是括号索引,而是 axis operator .但是,轴操作符只能应用于一些原始函数,以及派生自 /
的函数。 , \
, ⌿
或 ⍀
,因此如果将其应用于您的函数,则会出现语法错误。⍴fs
同样是一个函数序列,在这种情况下是一个顶部,而不是会返回 fs
形状的东西。 , 如 fs
是一个函数。
但是,即使函数不是 APL 中的一流对象,您也可以通过某种方式滥用训练,使其看起来好像参数实际上是跨函数数组映射的。让我们定义一个“Function ChainLink”函数FL
以此目的:
FL ← {(⊂⍺),⍵}
f
,
g
,
h
和一个论点
Y
我们要返回
(f Y)(g Y)(h Y)
.现在可以写成
(f FL g FL h)Y
, 对?嗯,不,有一个问题。最右边出现的
FL
必须替换为
FL∘⊂
.不幸的是,这是一个不可避免的麻烦,但至少现在你可以不用提
Y
每次。现在有两种情况:
f
: 在这种情况下,您可以简单地使用 (⊂f)Y
. f
, g
和 h
: 现在,你会写 (f FL g FL∘⊂h)Y
. FL
功能工作?事实上,它将结果链接在一起,而不是函数本身。它只是
enclose将结果放在数组的左边(
(⊂⍺)
),然后 con
catenate s 其右侧的结果 (
,⍵
)。这导致将左侧结果“预先”添加到右侧的结果数组中,但将其保持在一起,即不分离其各个元素。原因
⊂
第一次在这样的“链”中使用它是因为
FL
无法确定其右边的数组是正确函数的结果还是结果数组,因此,通过封闭第一次,您可以确保
FL
的正确参数始终是一个结果数组,而不是一个会因添加元素而破坏的裸结果。
FL
)都将使用相同的两个参数二元调用。例如,
X(f FL g FL∘⊂h)Y
与
(X f Y)(X g Y)(X h Y)
相同.但是,您可能希望以单一方式调用某些函数。虽然与手头的问题没有直接关系,但这个 monadic 运算符将使函数忽略它们的左参数(如果有的话),并且对于这个目的非常有帮助,仅仅是因为你避免了括号:
M ← {⍺⍺ ⍵}
f
,
g
,
h
和
p
,我们要调用
g
和
p
单一的,同时保留
f
的左参数和
h
.现在我们已经实现了
M
, 我们可以用
X
做到这一点是左参数和
Y
是对的:
X(f FL g M FL h FL∘⊂p M)Y
关于apl - 在 Dyalog 中创建闭包向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49953897/
我正在尝试学习 APL(一般的 APL 和 Dyalog APL,它似乎正在积极开发中并在斯德哥尔摩这里使用)。 这样做时,我观察到,在我的 Ubuntu Linux 环境中,dyalog(实际上是一
我有 2 个问题与比较 Dyalog APL 中的字符向量有关。以下代码将逐一比较字符向量: a←'ATCG' b←'GTCA' a=b 为了加快速度(在 2 个向量的情况下,以及在将多个向量与单个向
我学习 APL 才几周,但我真的很喜欢。我尝试编写简单的函数来练习我学到的东西。这个告诉我如果我每个月从 T 的初始资本中提取 W,接下来的 13 个月我还剩下多少钱。 R←T Money W M
我正在研究这个功能Happy练习控制流。 Happy测试一个数字是否是一个快乐的数字。我也在尝试学习错误处理。所以,我试图捕捉用户输入是否不是整数。特别是如果输入是一个字符串。为此,我尝试合并标量测试
我想定义一个带有单个参数的匿名函数向量,然后映射一个参数 x穿过这个向量,返回 f(x) 的结果数组对于每个索引。这在 Dyalog 中可能吗? 我问是因为我天真地尝试创建这样一个闭包向量: fs ←
我刚刚安装了 Dyalog APL,我看不到上面的语言栏和其他栏。没有进行任何先前的配置。操作系统是Windows 7。在这里你可以看到我的窗口和它的正常外观。 Normal look My wind
我无法让它在 Dyalog APL 中工作 solve←{ n a c b←⍵ n≤0:⍬ solve(n-1)a b c ⎕←'Move disk from
我得到了充满字母数字值的矩阵,不包括小写字母,如下所示: XX11X1X XX88X8X Y000YYY ZZZZ789 ABABABC 并负责计算每行中的重复次数,然后根据被重复角色的排名计算分数。
我有以下 APL 函数,我想将其保存在 .dyalog 文件中: ⍝ Project Euler Solutions summul ← {+/⍵×⍳⌊1000÷⍵} euler1 ← (summu
我需要在 Dyalog APL 中精确工作。我知道 ⎕PP 的值设置了精度,但我无法将其增加到超过 18,因此我无法获得超过 18 位的精度,并且我需要使用大数字进行操作。有什么办法可以提高精度吗?
我有以下 APL 函数,我想将其保存在 .dyalog 文件中: ⍝ Project Euler Solutions summul ← {+/⍵×⍳⌊1000÷⍵} euler1 ← (summu
至少有一种单字母语言(当然是 q)具有用于进程间通信的功能,这是一种在多台计算机上并行执行长时间运行的进程。这些 session 可以在同一台计算机上,也可以在不同大陆的服务器上。 使用 q,我只需启
有很多APL Fonts我有兴趣与 Remote IDE for Dyalog APL 一起使用. 如何更改 RIDE 中的字体? 最佳答案 RIDE 本质上是一个 Chromium 网络浏览器,字体
我最近获得了 Dyalog APL 的个人许可证并开始使用它(我正在从 APLX 切换过来)。我真的很喜欢它,但是每当我不使用 IDE 时,APL 符号键绑定(bind)都会持续存在。例如,如果我尝试
在 Dyalog APL 中有 ⎕ML这改变了分区的运作方式。 当⎕ML←0(5 ⍴ 1 0) ⊂ 5 5 ⍴ ⍳25 ┌→─────────────────────┐ │ ┌→────┐ ┌→───
如何将任何 Dyalog APL 值转换为可以传递给 ⍎ 的字符向量获得相同的值(value)? 预期如何: x←2 3⍴⍳6 x←1,⊂x x←x,⊂'foo'
我无法在 Dyalog APL for Mac 中加载 DyalogTutor_EN.dws 文件。错误是“指定文件出现错误(“翻译错误”)”。如何加载此文件以遵循使用此工作区示例的 Masterin
我一直在试验 SALT,但遇到了一致的 Load 问题,这些问题似乎只影响原始函数序列。我希望得到有关确保所有功能正确 Load 的任何建议。 为了说明,我将在一个清晰的工作区中创建一些用于转换十六进
我有一个包含 9000 个整数元素的向量,其中每组 9 有 3 个我想分离出来的子组,从而产生一个形状为 3 1000 3 的矩阵。这就是我所做的: ⎕IO←0 m←(9÷⍨≢data) 9⍴data
我看到这个问题的答案How to use rank operator instead of each in APL如何使用 Rank ⍤ 构建自己的 Each 运算符. Monadic Each f¨
我是一名优秀的程序员,十分优秀!