我正在寻找能够重新定义类型系统的编程语言,而不必侵入编译器。有没有什么可以让你这样做?
由于
答案 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有很好的类型创建可能性,特别是对于度量(例如,定义最小值和最大值,检查不同度量之间的操作......)。我已经把它作为一个例子来引用,以避免非常愚蠢的错误。