题
我只是在阅读一些有关HQ9+编程语言的信息( http://esolangs.org/wiki/hq9 , http://en.wikipedia.org/wiki/hq9%2B 和 http://www.cliff.biffle.org/esoterica/hq9plus.html ),它告诉我一些关于所谓的“蓄能器”的信息,可以增加但无法访问。另外,使用 +
不能操纵结果:
代码
H+H
结果
Hello World
Hello World
谁能向我解释这是如何工作的,这是什么功能以及是否有意义?谢谢
解决方案
写了 执行, ,我想我可以毫无疑问地说这根本没有意义。我建议您不要担心。毕竟这是一种非常愚蠢的语言。
其他提示
这是个玩笑。
还有一个面向对象的HQ9+的扩展名,称为HQ9 ++。它有一个新命令 ++
这实例化对象,并且由于向后兼容的原因,还将累加器寄存器递增两次。同样,由于无法存储,检索,访问,操纵,打印或以其他方式影响对象,因此完全没有用。
最近完成了Clojure的实施(以下是),我可以肯定地说,累加器对于成功实施HQ9+绝对是至关重要的。没有它,将会将HQ9的实现留下,虽然毫无疑问其本身值得,但显然是不同的,因此HQ9+没有累加器,因此将其递增的指示将其递增,但 不是 成为HQ9+的实现。
(编者注:鲍勃今天服用了他的药物,但他们还没有启动。因此,可能需要进一步的解释。我相信鲍勃试图说的是,HQ9+本身是一种编程语言,没有用。但是,实施它实际上在学习如何用新语言成功实施某些东西的背景下很有用。好吧,我现在就在鲍勃的大脑后面安静地卷曲,让他回到做...当我不在乎商店时,他做什么...).
无论如何...在Clojure中实施以下内容:
(defn hq9+ [& args]
"HQ9+ interpreter"
(loop [program (apply concat args)
accumulator 0]
(if (not (empty? program))
(case (first program)
\H (println "Hello, World!")
\Q (println (first (concat args)))
\9 (apply println (map #(str % " bottles of beer on the wall, "
% " bottles of beer, if one of those bottles should happen to fall, "
(if (> % 0) (- % 1) 99) " bottles of beer on the wall") (reverse (range 100))))
\+ (inc accumulator)
(println "invalid instruction: " (first program)))) ; default case
(if (> (count program) 1)
(recur (rest program) accumulator))))
请注意,此实现仅接受传递到该函数的命令作为参数;它没有读取其程序的文件。这可以在以后的版本中进行修复。另请注意,这是语言的“严格”实现 - 原始页面(在 Wayback Machine)清楚地表明,只有上层案例“ H和Q”才能接受 暗示 该较低的字母也可以接受。由于实施任何编程语言的一部分是严格遵守规范,因此本版本的hq9+被编写以仅接受上限字母。如果需要出现需求,我已经准备好找到一种宗教,暂定地命名了圣帽锁的召集,这将宣布使用弗雷德(Fred 友好 上帝的名字,不是吗?
分享并享受。
它会增加无法访问的东西,无法定义的,而且显然甚至没有真正使用。我会说您可以按照您想要或根本无法实施。
正确的答案是由其他答案暗示的,但没有明确说明:增加累加器的效果是由语言规范不确定的,并作为实现的选择。
实际上,我误会了。
累加器是存储上次计算结果的寄存器。在英特尔X86中,除MUL外,任何寄存器均可指定为累加器。
来源:
http://en.wikipedia.org/wiki/accumulator_(Computing)
我第一次访问时感到非常惊讶 第三个站点 在您的问题中,找出我的同学在页面底部写了OCAML实施。