小编Sid*_*hat的帖子

APL中快速排序的解释

我试图理解 APL 中的经典快速排序:

\n\n
Q\xe2\x86\x90{1\xe2\x89\xa5\xe2\x89\xa2\xe2\x8d\xb5:\xe2\x8d\xb5 \xe2\x8b\x84 S\xe2\x86\x90{\xe2\x8d\xba\xe2\x8c\xbf\xe2\x8d\xa8\xe2\x8d\xba \xe2\x8d\xba\xe2\x8d\xba \xe2\x8d\xb5} \xe2\x8b\x84 \xe2\x8d\xb5((\xe2\x88\x87<S)\xe2\x8d\xaa=S\xe2\x8d\xaa(\xe2\x88\x87>S))\xe2\x8d\xb5\xe2\x8c\xb7\xe2\x8d\xa8?\xe2\x89\xa2\xe2\x8d\xb5}\n
Run Code Online (Sandbox Code Playgroud)\n\n

有些事情我不明白,有些风格选择困扰我,所以我要把它们全部列出来。我希望有人可以向我解释它们。

\n\n
    \n
  1. 我知道在{ }defn 中,\xe2\x8d\xba是左参数,\xe2\x8d\xb5是右参数。\xe2\x8d\xba\xe2\x8d\xba里面是什么 S\xe2\x86\x90{\xe2\x8d\xba\xe2\x8c\xbf\xe2\x8d\xa8\xe2\x8d\xba \xe2\x8d\xba\xe2\x8d\xba \xe2\x8d\xb5}?同样,有一个\xe2\x8d\xb5\xe2\x8d\xb5? \xe2\x8d\xba里面的是S指 的左参数S还是 的左参数Q
  2. \n
\n\n

我的猜测是,\xe2\x8d\xba里面的S指的是 的左边参数S。the\xe2\x8d\xba\xe2\x8d\xba指的是封闭函数\xe2\x8d\xba的 的(即Q 的 )。\xe2\x8d\xba

\n\n
    \n
  1. 为什么要大量使用通勤(\xe2\x8d\xa8)?代码写成这样是不是更清晰了:
  2. \n
\n\n
Q\xe2\x86\x90{1\xe2\x89\xa5\xe2\x89\xa2\xe2\x8d\xb5:\xe2\x8d\xb5 \xe2\x8b\x84 S\xe2\x86\x90{(\xe2\x8d\xba \xe2\x8d\xba\xe2\x8d\xba \xe2\x8d\xb5)\xe2\x8c\xbf\xe2\x8d\xba} \xe2\x8b\x84 \xe2\x8d\xb5((\xe2\x88\x87<S)\xe2\x8d\xaa=S\xe2\x8d\xaa(\xe2\x88\x87>S))\xe2\x8d\xb5[?\xe2\x89\xa2\xe2\x8d\xb5]}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我能想到的使用 commute …

quicksort in-place apl dyalog

5
推荐指数
1
解决办法
502
查看次数

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

我现在知道如何使用 APL 解释器,但我对如何将 APL 写入文件然后运行该文件感到非常困惑。我目前使用RIDE编写 Dyalog APL 。我现在想做的是:

  1. 使用 RIDE 开发程序(我如何访问键绑定?)。
  2. 将我的程序保存到文件中。
  3. 使用命令行参数从命令行运行程序(如何获取命令行参数?)
  4. 分发我的程序以便其他人可以使用它们。

大多数在线文档都提到“APL 会话”,这让我觉得可能存在一些类似 Smalltalk 的东西,人们只能分发“实时图像”或类似的东西。如果是这样的话,我有一组不同的问题:

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

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

我使用的是 Ubuntu,一般来说我想以 Linux 为目标。Windows/macOS 支持将是一个优势,但我目前对 Linux 支持感兴趣。

executable software-distribution apl dyalog command-line-arguments

5
推荐指数
1
解决办法
1763
查看次数

如何实现 Coq?

如果一个人希望重新实现归纳结构的微积分,那么实现这一目标的“最短”路径是什么?特别是,内核内部到底发生了什么?

我的思维模型表明我们需要两件事:

  • 计算/将项简化为值的能力。
  • 能够进行类型检查以确保证明正确。

然而,由于语言是依赖类型的,类型检查器很可能依赖于在确定两种类型相等时的计算能力。

那么,实际上,Coq 求值器的操作语义是什么?类型检查推理规则是什么?它们实施起来有多困难?

我想要这两个事实的稳定、标准参考,以便我可以重新实现一个小型 CIC 内核。

coq

4
推荐指数
1
解决办法
249
查看次数

eq_rect是什么,在Coq中定义在哪里?

根据我的阅读,eq_rect平等似乎有着深深的联系。奇怪的是,我无法在手册上找到它的定义。

它来自哪里,它的状态是什么?

equality coq

3
推荐指数
1
解决办法
249
查看次数

在 clojure 中引用第一个参数的列表的值是最后一个参数?

为什么表达

('+ 10 20)
Run Code Online (Sandbox Code Playgroud)

评估为20? 这对我来说真的很奇怪!我本来希望给出一个错误,因为列表的第一个元素,'+我不是一个可以评估的东西!

clojure

2
推荐指数
1
解决办法
49
查看次数