我试图理解 APL 中的经典快速排序:
\n\nQ\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}\nRun Code Online (Sandbox Code Playgroud)\n\n有些事情我不明白,有些风格选择困扰我,所以我要把它们全部列出来。我希望有人可以向我解释它们。
\n\n{ }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? 我的猜测是,\xe2\x8d\xba里面的S指的是 的左边参数S。the\xe2\x8d\xba\xe2\x8d\xba指的是封闭函数\xe2\x8d\xba的 的(即Q 的 )。\xe2\x8d\xba
\xe2\x8d\xa8)?代码写成这样是不是更清晰了: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]}\nRun Code Online (Sandbox Code Playgroud)\n\n我能想到的使用 commute …
我现在知道如何使用 APL 解释器,但我对如何将 APL 写入文件然后运行该文件感到非常困惑。我目前使用RIDE编写 Dyalog APL 。我现在想做的是:
大多数在线文档都提到“APL 会话”,这让我觉得可能存在一些类似 Smalltalk 的东西,人们只能分发“实时图像”或类似的东西。如果是这样的话,我有一组不同的问题:
总的来说,我对如何用APL编写软件感到很困惑!
我使用的是 Ubuntu,一般来说我想以 Linux 为目标。Windows/macOS 支持将是一个优势,但我目前对 Linux 支持感兴趣。
executable software-distribution apl dyalog command-line-arguments
如果一个人希望重新实现归纳结构的微积分,那么实现这一目标的“最短”路径是什么?特别是,内核内部到底发生了什么?
我的思维模型表明我们需要两件事:
然而,由于语言是依赖类型的,类型检查器很可能依赖于在确定两种类型相等时的计算能力。
那么,实际上,Coq 求值器的操作语义是什么?类型检查推理规则是什么?它们实施起来有多困难?
我想要这两个事实的稳定、标准参考,以便我可以重新实现一个小型 CIC 内核。
根据我的阅读,eq_rect平等似乎有着深深的联系。奇怪的是,我无法在手册上找到它的定义。
它来自哪里,它的状态是什么?
为什么表达
('+ 10 20)
Run Code Online (Sandbox Code Playgroud)
评估为20? 这对我来说真的很奇怪!我本来希望给出一个错误,因为列表的第一个元素,'+我不是一个可以评估的东西!