9得票1回答
在Haskell实现中是否允许Unicode标识符是在哪里指定的?

我想使用非拉丁字符的Unicode字符(在标识符中)编写一些有关IT技术的Haskell示例代码。(这样标识符看起来更自然,对于不使用拉丁字符书写的其他自然语言的人来说也更易懂。)因此,我开始寻找一个适合的Haskell实现。 但是,这个特性在语言规范中指定在哪里呢?当寻找符合规范的实现时,...

25得票6回答
“寄存器机”是什么?

引用自http://code.google.com/p/unladen-swallow/wiki/ProjectPlan: "使用JIT也将使我们能够将Python从基于堆栈的机器转移到基于寄存器的机器,这已经被证明可以提高其他类似语言的性能(Ierusalimschy等人,2005年; S...

48得票9回答
12得票5回答
为共享数组子范围设计的智能垃圾收集器?

在这个关于为什么C#中子字符串需要O(n)时间复杂度的流行问题中,一个主要提供的答案认为,如果分配了一个大数组并且通过让新字符串只引用小数组片段来计算子字符串,则即使原始字符串不再被引用,垃圾收集器也无法回收包含较大字符串的字符数组。 这似乎是一个完全有效的答案,但从理论上讲,似乎可以构建一...

7得票1回答
“yield”关键字是一种语法糖吗?它的实现是什么?

可能是重复问题: yield语句实现 我看到了MSDN文档,它说: yield关键字告诉编译器,其所在的方法是一个迭代器块。编译器生成一个类来实现迭代器块中表达的行为。在迭代器块中,yield关键字与return关键字一起用于向枚举器对象提供值。 这意味着yield关键字是语法...

24得票4回答
为什么Python列表加法必须是同质的?

是否有了解Python内部(CPython或其他实现方式)的人能够解释为什么列表相加需要是同质的:In [1]: x = [1] In [2]: x+"foo" -----------------------------------------------------------------...

7得票7回答
C:`const`关键字的行为

我听说如果我在使用 ANSI C 编码时,应按变量使用的顺序声明变量,断言指针不为 null 并且索引在范围内,在变量使用之前初始化。 如果我声明一个 const,我能否在一段断言和代码后进行初始化? 在 Java 中,final 初始化必须在声明时进行,但是在 ANSI C 实现中是否一...

14得票2回答
理解memcpy()的实现方式

我在查看memcpy.c的实现时,发现了一段不同的memcpy代码。我不理解为什么要执行 (((ADDRESS) s) | ((ADDRESS) d) | c) & (sizeof(UINT) - 1)。#if !defined(__MACHDEP_MEMFUNC) #ifdef _...

21得票6回答
Haskell编译器是如何工作的?

我想知道哪里可以获得一些关于Haskell编译器实际工作原理的纸质/文档等材料?我读了GHC的许多文档,但是在头痛之后就停下来了。因此,最好有些东西不需要博士学位才能理解,并且没有使用"你应该已经熟悉这个"风格的写作方式。如果它确实很长并需要花费一些时间来理解,那也没有问题。 附注:最有趣的...

14得票2回答
编译语言中垃圾回收的实现

当实现精确垃圾回收时,总是需要解决如何确定堆栈上的哪些单词是指针,哪些是其他类型的数据,例如整数或浮点数的问题。解释性语言通常通过将所有内容都设为指针来解决这个问题;而对于一些语言(例如Lisp),编译器则通常使用标记位来区分指针和整数。但对于支持完全未装箱机器字长整数和浮点数的Java和C#...