如何将任何Dyalog APL值转换为可以传递给⍎
以获得相同值的字符向量?
预期效果如何:
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源代码中而不在文件中,因为在我使用的框架中,源代码由版本控制系统很好地管理,而文件则没有。而且我希望它可以被人类编辑,而不仅仅是序列化,以便在参数/结果发生变化时更轻松地修改现有的测试方案。
最佳答案
我认为,由于多种原因,执行和“转移表格”不是最佳解决方案:
根据您的数据的样子,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型束已成为系统功能⎕JSON。
关于apl - Dyalog APL中的"APL Object Notation",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44243094/