3

我正在尝试学习 APL(一般的 APL 和 Dyalog APL,它似乎正在积极开发并在斯德哥尔摩使用)。

这样做时,我观察到,在我的 Ubuntu Linux 环境中,当 stdin 与管道或打开磁盘文件而不是终端驱动程序。

当我用管道替换终端驱动程序作为标准输入时,解释器似乎不再理解]DISPLAY。

这里 ]DISPLAY 命令/功能似乎有效:

Command: dyalog without arguments or stdin redirection :

Dyalog APL/S-64 Version 16.0.30320
Unicode Edition
Mon Aug 14 19:27:14 2017
      ]DISPLAY 42

42

在这里,解释器似乎对 ]DISPLAY 感到困惑:

root@lenovo201707:/home/u/20170814# ( echo "]DISPLAY 42" ; echo ")off" ) |         dyalog
Dyalog APL/S-64 Version 16.0.30320 Unicode
For i86_64
Created: Jul  7 2017 at 02:48:48
Copyright (c) Dyalog Limited 1982-2017
      ]DISPLAY 42

VALUE ERROR
root@lenovo201707:/home/u/20170814# 

从现有的 UTF-8 编码文件加载和执行我的 APL 代码时,是否有一种简单的方法可以不丢失 ]DISPLAY 函数?

此致 !汉斯戴维森

4

2 回答 2

2

更新的答案: 以下应该解决您的要求:

( echo "]DISPLAY 42" ; echo ")off" ) |  /opt/mdyalog/16.0/64/unicode/mapl salt  

唯一改变的细节是我们现在在尝试执行 UCMD 之前加载 salt-workspace。SALT 将(通过其⎕LX)设置环境,以便它可以处理 UCMD。

我最初的回复: 我是 Windows 用户,并且必须承认我从未使用过 Linux Pipes,所以我无法提供一般机制。

但我有一个具体问题的答案。]DISPLAY:您可以使用 调用程序控制下的任何 UCMD ⎕se.UCMD'{ucmd & args}',例如:⎕se.UCMD'DISPLAY ⍳3 3'

顺便说一句,我个人调用⎕se.Dyalog.Utils.disp MyVar它避免了 UCMD 机制,并且在从 fn 调用时更容易使用。

于 2017-08-16T09:05:05.607 回答
2
于 2017-08-18T06:21:21.840 回答