gpt4 book ai didi

apl - Dyalog APL 中的 "APL Object Notation"

转载 作者:行者123 更新时间:2023-12-05 00:15:35 27 4
gpt4 key购买 nike

如何将任何 Dyalog APL 值转换为可以传递给 的字符向量获得相同的值(value)?

预期如何:

      x←2 3⍴⍳6
x←1,⊂x
x←x,⊂'foo'
y←desired_function x
DPX y
┌→─────────────────┐
│1,(⊂2 3⍴⍳6),⊂'foo'│
└──────────────────┘
x≡⍎y
1

更新

这个想法是将一个值转换为人工可编辑的 APL 源代码,以便能够在发现新的有问题的场景时将其插入到单元测试函数中。我希望这些测试场景在 APL 源代码中,而不是在文件中,因为在我使用的框架中,源代码由版本控制系统很好地管理,而文件不是。而且我希望它是人工可编辑的,而不仅仅是序列化的,以便在参数/结果发生变化时更容易修改现有的测试场景。

最佳答案

在我看来,Execute & "transfer form"并不是最优的解决方案,原因有很多:

  • 复杂的结构很快变得难以阅读
  • 与其他解决方案相比,Execute 是一个相对繁重/效率低下的调用工具
  • 如果您不小心,您就会面临“注入(inject)”攻击,即文件中的恶意代码应该包含常量但在应用程序启动时正在执行。

  • 根据您的数据的样子,JSON 可能是一个不错的选择——它是专门为此设计的格式:

    在 Dyalog 15.0 中:
           fromJSON←7159⌶ ⋄ toJSON←7160⌶ 
    (namespace←⎕NS '').life←42
    toJSON (⍳4) 'Hello' namespace
    [[1,2,3,4],"Hello",{"life":42}]

    JSON 的缺点是它不能表示更高维的数组。因此,如果您需要矩阵,则需要稍微按摩一下:
           toJSON ↓3 4⍴⍳12 
    [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
    ↑fromJSON '[[1,2,3],[5,6,7]]'
    1 2 3
    5 6 7

    在本月底发布的 16.0 版本中,实验性 I-Beams 已成为系统函数⎕JSON。

    关于apl - Dyalog APL 中的 "APL Object Notation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243094/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com