我一直在研究编程语言是如何工作的,其中一些有一个所谓的虚拟机.我知道这是在另一种编程语言中对编程语言进行仿真的某种形式,并且它的工作方式与使用堆栈执行编译语言的方式相同.我做对了吗?
根据我所做的附带条件,让我感到困惑的是,许多非编译语言允许使用"自由"类型系统的变量.以Python为例,我可以这样写:
x = "Hello world!"
x = 2**1000
Run Code Online (Sandbox Code Playgroud)
字符串和大整数是完全不相关的,并且在内存中占用不同的空间,那么这个代码如何在基于堆栈的环境中表示?这到底发生了什么?x是否指向堆栈中的新位置并且旧的字符串数据未被引用?这些语言不使用堆栈吗?如果没有,它们如何在内部表示变量?
我一直在寻找boost :: tokenizer,我发现文档很薄.是否有可能使它像一个像"海豚 - 猴子 - 狒狒"这样的字符串进行标记,并使每一个字都成为一个标记,以及每一个双字母都是一个标记?从示例中我只看到允许单个字符分隔符.库是否不够先进,不适合更复杂的分隔符?
VS2010 Beta 2 F#编译器总是抱怨我对when关键字的使用,即使使用应该起作用的复制粘贴代码,例如这些代码段中的任何一个.例如,这是我在尝试执行一个非常简单的表达式时得到的错误:
"错误FS0010:表达式中出现'意外关键字'.预期' - >'或其他标记."
[for i in 1..50 when i < 10 -> i]
---------------^^^^
Run Code Online (Sandbox Code Playgroud) 这是一个快速而简单的问题:使用 C++ 中的 GDI+,我将如何从内存中的像素数据加载图像?
在F#中,我想基于现有实例构造一个区分联合的实例(正确的术语?).例:
type union Currency =
| Dollar of int
| Euro of int
let lowPrice = Dollar 100 (* or, it could be *) let lowPrice = Euro 100
let highPrice = (* of the same union case as lowPrice but with value 200 *)
Run Code Online (Sandbox Code Playgroud)
我可以插入什么代码来代替注释来创建该效果?