如何将任何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源代码中,而不是在文件中,因为在我使用的框架中,源代码由版本控制系统很好地管理,而文件则不是。我希望它是可人工编辑的,而不仅仅是序列化的,以便在参数/结果发生变化时更容易修改现有的测试场景。
发布于 2017-07-12 18:44:08
⎕SE.Dyalog.Utils.repObj
例如:
x←2 3⍴⍳6
x←1,⊂x
x←x,⊂'foo'
y←⎕SE.Dyalog.Utils.repObj x
]Display y
┌→─────────────────────┐
│1 (2 3⍴1-⎕io-⍳6) 'foo'│
└──────────────────────┘
x≡⍎y
1发布于 2017-06-03 12:26:09
在我看来,Execute & "transfer form“并不是最佳解决方案,原因如下:
根据数据的外观,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。
发布于 2017-05-31 14:15:57
我不知道是否有一种使用⍎的方法,但是我要提到Dyalog版本15.0有2I-Beams来序列化和反序列化。
http://help.dyalog.com/15.0/Content/Language/Primitive%20Operators/Serialise%20Array.htm
例如:
]disp x
┌→┬─────┬───┐
│1│0 1 2│foo│
│ │3 4 5↓ │
└─┴~───→┴──→┘
y← 0(220⌶) 0(219⌶) 1(219⌶) 1(220⌶) x
]disp y
┌→┬─────┬───┐
│1│0 1 2│foo│
│ │3 4 5↓ │
└─┴~───→┴──→┘
y ≡ x
1此外,您可能希望加入我们的论坛,因为您会接触到更多的Dyalog APL用户,如果您问您的问题在那里。
http://www.dyalog.com/forum/
致以敬意,
文斯
https://stackoverflow.com/questions/44243094
复制相似问题