函数式编程语言内省

rwa*_*ace 17 f# ocaml haskell functional-programming introspection

我正在草拟一些设计(函数的机器学习),它最好是想要一种函数式编程语言,还有内省,特别是以一些易于处理的格式检查程序自己的代码的能力,最好还有获取机器的能力.生成的代码是在运行时编译的,我想知道什么是编写它的最佳语言.Lisp当然具有强大的内省功能,但静态类型语言也有优势; 我正在考虑的是:

F# - .Net平台在这里有一个很好的故事,你可以在运行时读取字节码,也可以发出字节码并进行编译; 我假设从F#访问这些设施没有问题.

Haskell,Ocaml - 通过字节码或解析树,它们有类似的功能吗?

还有其他语言我还应该关注吗?

Gil*_*il' 10

Ocaml有:

  • Camlp4用于操作Ocaml中的Ocaml具体语法树.Camlp4的维护实现是Camlp5.

  • MetaOCaml用于全面的多阶段编程.

  • Ocamljit在运行时生成本机代码,但我认为它最近没有被维护.

  • Ocaml-Java为Java虚拟机编译Ocaml代码.我不知道是否有很好的反射功能.


Don*_*art 9

Haskell的内省机制是Template Haskell,它支持编译时元编程,当与例如llvm结合使用时,它提供了运行时元编程功能.


Bri*_*ian 6

不是一个真正的答案,但请注意F#Quotations功能和,以获得更多的同性化.


dha*_*fey 5

你可能会检查出的类型变异球拍(以前称为PLT的计划).它保留了Scheme的大部分语法简洁性,但提供了静态类型系统.由于Racket是一个Scheme,元编程是课程的标准,运行时可以通过JIT发出本机代码.