我读过 fsi.exe (F# Interactive) 不是严格意义上的真正“解释器”,因为它动态编译 F# 代码并显示其输出。

我的印象是“解释器”这个词适用于“动态”语言(即 JavaScript),因此不适用于 F#,因为它是一种编译语言。

这是一个公平的评估吗?或者可以“解释”编译语言吗?或者这只是一个语义问题?

感谢任何帮助。

最佳答案

编译和解释之间的区别是模糊的。许多被视为“解释型”的语言实际上经常被编译为原生代码(例如,带有 v8 的 JavaScript)。动态语言的最动态特性 eval 的一些实现只是编译的包装器(例如,在 SBCL 中)。

当然,REPL 与编译或解释无关,REPL 可以建立在任何执行模型之上。 fsi 只是一个 REPL,它使用与 fsc 相同的 F# 编译器核心。

10-06 13:29
查看更多