是否有任何编程语言可以重新定义其类型系统?

时间:2010-09-30 14:15:50

标签: programming-languages types

我正在寻找能够重新定义类型系统的编程语言,而不必侵入编译器。有没有什么可以让你这样做?

由于

4 个答案:

答案 0 :(得分:2)

在C中,您可以使用DEFINE重新定义所有内容。

#DEFINE int double

无论是好还是坏,你都可以在这里找到:

What is the worst real-world macros/pre-processor abuse you've ever come across?

答案 1 :(得分:1)

如果您正在谈论重新定义实际类型的系统,例如使静态类型语言动态化或使弱类型语言强类型化,那么不。

实际上,每种语言都可以让你定义自己的类型,所以我认为这也不是你的意思。

我能想到的唯一可能符合你所要求的是Common Lisp中的宏,它可以让你扩展语法。这可能能够实现您所寻找的目标,但在您说出您正在寻找的内容之前,我无法详细说明。

OCaml及其相关语言也允许你用类型做一些非常酷的事情。你基本上可以定义任何你能想到的类型,然后通过模式匹配来匹配它,这使编写编译器特别好。

答案 2 :(得分:0)

Javascript,Ruby和Smalltalk,就我所知,允许你做各种各样的事情,甚至可以动态地重新定义对象可以做什么。 Perl允许您重新定义几乎所有语言。基本上任何体面的脚本语言,特别是允许鸭子打字的语言,应该具有相同的权力。但它似乎在功能语言和具有功能能力的语言中非常普遍。

答案 3 :(得分:0)

如果我没记错的话,Ada有很好的类型创建可能性,特别是对于度量(例如,定义最小值和最大值,检查不同度量之间的操作......)。我已经把它作为一个例子来引用,以避免非常愚蠢的错误。

相关问题