将函数标识符转换为字符串
Converting function identifier to string
如果我在 APL 中有一个函数向量,有没有办法将函数名称的向量作为字符串获取?我试过 DISPLAY 和 ⍕ 都没有成功:
)copy display
C:\Program Files (x86)\Dyalog\Dyalog APL 16.0 Classic\ws\display.DWS sa
ved Thu Jul 25 08:51:54 2019
functions ← (DISPLAY) DISPLAY
DISPLAY functions
∇DISPLAY ∇DISPLAY ∇DISPLAY
DISPLAY ⍕functions
∇DISPLAY ⍕ ∇DISPLAY ∇DISPLAY
另外,为什么调用 DISPLAY 的输出中元素周围没有边框?
遗憾的是,APL 不是函数式语言,因此不存在函数数组之类的东西。
您在 functions
中拥有的是 2 列火车或 atop:https://apl.wiki/atop
DISPLAY functions
然后成为 atop of atop (f(g h))⍵
和 DISPLAY⍕functions
是 3-train 或 fork: https://apl.wiki/fork
您可以在 Dyalog APL 中接近的一种方法是命名空间数组,这些命名空间都包含类似命名的函数。然后你可以在一次调用中调用所有具有相同参数的函数:
ns_array←⎕ns¨3⍴⊂⍬
ns_array[1].dfn←{⍺+⍵}
ns_array[2].dfn←{2×⍵}
ns_array[3].dfn←{'wow'}
3 ns_array.dfn 42
┌──┬──┬───┐
│45│84│wow│
└──┴──┴───┘
有关在 Dyalog 中模拟函数数组的可能方法的详细信息,请参阅 https://dfns.dyalog.com/n_Function_arrays.htm
至于DISPLAY
功能。它需要一个 APL 数组参数。 These are names of name class 2. 你可以用 ⎕NC'name'
.
得到数组的名称 class
您可能会发现使用 ]box on
打开装箱会更好,以便在会话中显示装箱的嵌套数组。
事实上,使用 ]box on -trains=tree
,然后从您的示例中输入“函数”并按回车键。然后 box user 命令显示你创建的默认函数的树结构。实际上不要那样做,你会得到大量丑陋的输出。尝试使用 +⌿÷≢
和 avg←+⌿÷≢
代替。
最后,我的会话中通常有]box on -trains=tree -fns=on
和]rows -fold=3
(您可以在RIDE中使用会话→保存Windows和{2⎕NQ⎕SE'FileWrite'⊣⎕SE⎕WS'File'⍵}'/path/to/session_file.dse
来保存设置。)
使用 ]box -?
和 ]rows -?
查看这些用户命令的帮助。
如果我在 APL 中有一个函数向量,有没有办法将函数名称的向量作为字符串获取?我试过 DISPLAY 和 ⍕ 都没有成功:
)copy display
C:\Program Files (x86)\Dyalog\Dyalog APL 16.0 Classic\ws\display.DWS sa
ved Thu Jul 25 08:51:54 2019
functions ← (DISPLAY) DISPLAY
DISPLAY functions
∇DISPLAY ∇DISPLAY ∇DISPLAY
DISPLAY ⍕functions
∇DISPLAY ⍕ ∇DISPLAY ∇DISPLAY
另外,为什么调用 DISPLAY 的输出中元素周围没有边框?
遗憾的是,APL 不是函数式语言,因此不存在函数数组之类的东西。
您在 functions
中拥有的是 2 列火车或 atop:https://apl.wiki/atop
DISPLAY functions
然后成为 atop of atop (f(g h))⍵
和 DISPLAY⍕functions
是 3-train 或 fork: https://apl.wiki/fork
您可以在 Dyalog APL 中接近的一种方法是命名空间数组,这些命名空间都包含类似命名的函数。然后你可以在一次调用中调用所有具有相同参数的函数:
ns_array←⎕ns¨3⍴⊂⍬
ns_array[1].dfn←{⍺+⍵}
ns_array[2].dfn←{2×⍵}
ns_array[3].dfn←{'wow'}
3 ns_array.dfn 42
┌──┬──┬───┐
│45│84│wow│
└──┴──┴───┘
有关在 Dyalog 中模拟函数数组的可能方法的详细信息,请参阅 https://dfns.dyalog.com/n_Function_arrays.htm
至于DISPLAY
功能。它需要一个 APL 数组参数。 These are names of name class 2. 你可以用 ⎕NC'name'
.
您可能会发现使用 ]box on
打开装箱会更好,以便在会话中显示装箱的嵌套数组。
事实上,使用 ]box on -trains=tree
,然后从您的示例中输入“函数”并按回车键。然后 box user 命令显示你创建的默认函数的树结构。实际上不要那样做,你会得到大量丑陋的输出。尝试使用 +⌿÷≢
和 avg←+⌿÷≢
代替。
最后,我的会话中通常有]box on -trains=tree -fns=on
和]rows -fold=3
(您可以在RIDE中使用会话→保存Windows和{2⎕NQ⎕SE'FileWrite'⊣⎕SE⎕WS'File'⍵}'/path/to/session_file.dse
来保存设置。)
使用 ]box -?
和 ]rows -?
查看这些用户命令的帮助。