您是否知道使用静态类型检查语言,其中Code是Data?

Dzm*_*oda 17 lisp programming-languages static-typing s-expression

你能用静态类型检查(如Java)命名语言,代码是数据(如LISP)吗?我的意思是两种语言.

Jör*_*tag 14

齐是一种静态类型的Lisp方言.此外,许多其他Lisp方言有(可选)静态类型.

Java本身的功能非常有限.

有趣的问题不在于您是否可以进行元编程和静态类型,而是您是否可以将动态元编程设置为静态类型安全.

有模板哈斯克尔这确实元编程和类型安全的,但它是静态的元编程.

目前我无法想到我所知道的任何语言允许动态元编程以及动态元编程是静态类型安全的.齐可能很难做到,但我不确定.

  • 我可以要求澄清条款吗?我不确定我是否理解你的观点。动态元编程与静态元编程是什么意思?静态元编程是“在编译时”,即宏,还是动态,“在运行时”,即任意表达式引用? (2认同)

Eli*_*lay 11

Racket(以前的PLT Scheme)有一个静态类型的方言,旨在与Scheme惯用语 - 包括宏 - 很好地协作.(它通过类型检查扩展结果来工作.)


JAB*_*JAB 0

如果您只是寻求以静态类型语言动态执行代码的能力,那么 Java 本身就可以做到这一点:

http://www.javaworld.com/javaworld/jw-06-2006/jw-0612-dynamic.html

如果您需要更多(想要方法和类作为一流对象等),那么您将需要使用 Haskell 或 C#(如其他答案中提到的)之类的东西。