我读过 fsi.exe (F# Interactive) 不是严格意义上的真正“解释器”,因为它动态编译 F# 代码并显示其输出。
我的印象是“解释器”这个词适用于“动态”语言(即 JavaScript),因此不适用于 F#,因为它是一种编译语言。
这是一个公平的评估吗?或者可以“解释”编译语言吗?或者这只是一个语义问题?
感谢任何帮助。
最佳答案
编译和解释之间的区别是模糊的。许多被视为“解释型”的语言实际上经常被编译为原生代码(例如,带有 v8 的 JavaScript)。动态语言的最动态特性 eval
的一些实现只是编译的包装器(例如,在 SBCL 中)。
当然,REPL 与编译或解释无关,REPL 可以建立在任何执行模型之上。 fsi
只是一个 REPL,它使用与 fsc
相同的 F# 编译器核心。