【发布时间】:2012-08-20 13:49:32
【问题描述】:
我知道它与 this SO question 和 this one 有关,但我想知道是否(以及如何)可以在运行时创建新的 F# 函数。
我的意思是在不显示的情况下使用 REPL。除了 CodeDOM 和 Reflection 或 Quotations 还有其他选择吗?
如果在 F# 中不可行,是否可以在任何其他 .Net 语言中实现?
【问题讨论】:
我知道它与 this SO question 和 this one 有关,但我想知道是否(以及如何)可以在运行时创建新的 F# 函数。
我的意思是在不显示的情况下使用 REPL。除了 CodeDOM 和 Reflection 或 Quotations 还有其他选择吗?
如果在 F# 中不可行,是否可以在任何其他 .Net 语言中实现?
【问题讨论】:
当然可以,这就是 DLR(动态语言运行时)的用途。 IronPython、IronRuby 和其他与您描述的完全一样的动态语言使用它。 DLR 只是一个库,因此您可以根据需要在 F# 中使用它。
另一种选择是使用 F# 的高阶函数来实现类似的功能——这将非常灵活,但最终会稍微慢一些,因为 .NET CLR 无法以优化方式做太多(如果有的话) .
【讨论】: