Dyalog APL:如何编写可以执行的独立文件?

Dyalog APL: how to write standalone files that can be executed?

我现在知道如何使用 APL 解释器,但我很困惑如何将 APL 写入文件然后 运行 所述文件。我目前使用 ride IDE 编写 Dyalog APL。我现在要做的是:

  1. 使用搭便车 IDE 开发程序(我还能如何访问快捷键?)。
  2. 将我的程序保存到文件中。
  3. 运行 来自命令行的程序,带有命令行参数(我如何获取命令行参数?)
  4. 分发我的程序以便其他人可以使用它们。

大多数在线文档都提到了 "APL session",这让我觉得也许有一些类似 Smalltalk 的东西正在发生,其中人们只能分发 "live image" 或类似的东西。如果是这样的话,我有一组不同的问题:

  1. 如何保存和加载这些图像文件?
  2. 如何分发图像文件?
  3. 我可以从命令行执行此类代码以获取命令行参数吗?

总的来说,我对如何用 APL 编写软件感到很困惑!

编辑:我在 Ubuntu 上,一般来说我想瞄准 Linux。 Windows/macOS 支持会更好,但我目前对 Linux 支持很感兴趣。

我是这样做的(不是 Dyalog 的官方推荐):

Use the ride IDE to develop programs (how else do I access the keybindings?).

RIDE 很酷(我有偏见),尤其是在您想以交互方式探索语言的初期。

但实际上我更喜欢使用 Vim 和 this 插件编辑纯文本文件。 它提供带有可配置前缀键的键绑定。 我认为还有一种方法可以将 Vim 或 Emacs 配置为 RIDE 的外部编辑器 - 这样您就可以同时拥有闪亮的会话界面和您手指熟悉的极其高效的编辑器。

或者,对于键绑定,您可以这样做:

setxkbmap -layout us,apl -option grp:win_switch

同时按下 "Windows key" 和另一个键可在任何 X11 应用程序中插入一个 APL 字符 - 方便电子邮件、聊天等。

Save my program to a file. Run the program from the command line,

我把这个放在最上面:

#!/bin/bash
(echo ∇M;tail -n+3 [=11=];echo -e '∇\nM\n⎕off')|dyalog -script;exit $?
⎕io←0⋄⎕ct←0⋄⎕pw←32767 ⍝ opinionated :)

并做

chmod +x file.dyalog
./file.dyalog

with command line arguments (how do I take command line arguments?)

这有点问题。 Windows 有 2⎕NQ#'GetCommandLineArgs' 但我不知道 Linux.

的有效解决方案

查看下面的评论和

Distribute my program so others can use them.

任何你喜欢的方式 - github、gitlab、bitbucket、你自己的网站、鸽子等

"APL session"

这只是 "REPL" 的传统 APL 术语。

目前,创建独立可执行文件(单个 .exe 文件)的功能仅在 Windows 上存在,但 Dyalog 正在努力使跨平台成为可能。但是,您可以非常接近。在开始之前,让我回答您最初的问题:

  1. Use the ride IDE to develop programs (how else do I access the keybindings?).

有几种方便的方法可以在 RIDE 之外输入字形,既可以通过编辑器扩展,也可以通过单独的系统范围方法来输入前缀 and/or 移位键输入。有关详细信息,请查看 APL Wiki 在 typing glyphs.

上的文章
  1. Run the program from the command line, with command line arguments (how do I take command line arguments?)

⊢2⎕NQ#'GetCommandLineArgs' returns 用于启动当前应用程序的命令和命令的参数。这适用于跨平台。 Try it online 在 Linux 下!


您所说的“实时图像”就是 APL 人所说的 工作空间。一旦您的应用程序按您希望的方式工作,请将 ⎕LX(Latent eXpression)变量设置为启动您的应用程序然后在完成后关闭 APL 的语句,例如⎕LX←'myApp.Run ⋄ ⎕OFF'.

接下来,使用 )save /tmp/myapp.

将您的应用程序保存为工作区

您现在应该可以 运行 您的应用程序 dyalog -hello=world /tmp/myapp 等。您当然可以将它放在 shell 脚本中以便于使用。

您将分发给您的客户的至少是工作区和 运行 时间解释器,但您可能还想打包一些伴侣 files/dependencies。但是,在通过您的应用程序赚钱之前,请先查看 Dyalog 的 prices and Licences.