ML 中有 eval 函数吗?
问问题
516 次
3 回答
1
ML 实际上只是一种方言,但据我所知,我使用过的任何 ML 实现(OCaml,F#)都没有 eval。这是有道理的,因为 ML 使用严格类型(类型在编译时已知)。Eval 会打破这个保证。
但是我确实在 OCaml 中找到了一个 eval 的实现,它显然使用了顶层代码:
于 2010-06-10T14:16:05.403 回答
0
在 F# 中可以有某种 eval,但必须引用要评估的代码。
#r"FSharp.PowerPack.dll"
#r"FSharp.PowerPack.Linq.dll"
(* load the PowerPack *)
open Microsoft.FSharp.Quotations
open Microsoft.FSharp.QuotationEvaluation
let x = <@@ 8*11 @@>
x.EvalUntyped() // = 88
更多关于代码引用:http: //msdn.microsoft.com/en-us/library/dd233212.aspx
于 2012-03-17T11:57:02.130 回答
0
是的,至少 SML/NJ 和 Poly/ML 可以做到这一点:代码在运行时编译并添加到环境中。
对于 Poly/ML,这里有一个工作示例:ML REPL
Poly/ML 可以做更多类似的事情,例如在程序控制下管理 ML 环境。它还支持源代码级调试,在断点处进行任意评估。
于 2016-02-07T22:46:38.720 回答