我面对的是“引用”一词,我试图弄清楚一些现实生活中使用它的例子.为每个代码表达式设置AST的能力听起来很棒,但如何在现实生活中使用它?
有谁知道这样的例子?
解决方法
我认为引用在F#和Nemerle中的用途完全不同.在F#中,您不使用引号来扩展F#语言本身,而是使用它们来获取用标准F#编写的某些程序的AST(代码的数据表示).
在F#中,这可以通过将一段代码包装在< @..F#code .. @>中,或者通过向函数添加特殊的attribtue来完成:
[<ReflectedDeFinition>] let foo () = // body of a function (standard F# code)
Robert已经提到了这种机制的一些用法 – 您可以使用代码并将F#转换为SQL to query database,但还有其他一些用途.你可以举例如:
>将F#代码翻译为run on GPU
>将F#代码翻译为JavaScript using WebSharper