将函数标识符转换为字符串

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 列火车或 atophttps://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 -? 查看这些用户命令的帮助。