我正在研究编程语言设计,我感兴趣的是如何用多方法泛型函数范例替换流行的单调度消息传递OO范例.在大多数情况下,它似乎非常简单,但我最近陷入困境,并希望得到一些帮助.
在我看来,消息传递OO是一种解决两个不同问题的解决方案.我在下面的伪代码中详细解释了我的意思.
===在文件animal.code ===
- Animals can "bark"
- Dogs "bark" by printing "woof" to the screen.
- Cats "bark" by printing "meow" to the screen.
Run Code Online (Sandbox Code Playgroud)
===在文件myprogram.code ===
import animal.code
for each animal a in list-of-animals :
a.bark()
Run Code Online (Sandbox Code Playgroud)
在这个问题中,"树皮"是一种具有多个"分支"的方法,它们根据参数类型的不同而不同.我们对我们感兴趣的每种参数类型(狗和猫)实施一次"树皮".在运行时,我们能够遍历动物列表并动态选择要采用的分支.
===在文件animal.code ===
- Animals can "bark"
Run Code Online (Sandbox Code Playgroud)
===在文件tree.code ===
- Trees have "bark"
Run Code Online (Sandbox Code Playgroud)
===在文件myprogram.code ===
import animal.code
import tree.code
a = new-dog()
a.bark() //Make the dog bark
…
t = new-tree()
b = t.bark() //Retrieve the bark from …Run Code Online (Sandbox Code Playgroud) 我正在为类似于Scheme的语言开发编译器,并正在阅读Dybvig的论文.在其中,他说通过在堆栈上而不是堆上分配调用帧来实现大部分性能提升.为了在闭包和延续的情况下实际完成这项工作,需要做几个技巧.
我的问题是这种性能增益来自何处?这纯粹是因为我们减少了对垃圾收集器的压力吗?
换句话说:假设我们有无限的内存量,堆叠分配的调用帧是否仍然比堆分配的调用帧快?
我想在 Emacs 中完成以下行为,并且想知道是否有一个现有的包已经可以满足我的要求。
我希望我的缓冲区只显示文件 myfile.txt 中的第 30 到 60 行,并且对我隐藏文件的其余部分。
这非常接近我理想的工作流程。非常感谢您的帮助!