首页 / 知识

关于.net:F#中的宏支持

2023-04-16 21:26:00

关于.net:F#中的宏支持

macro support in F#

在阅读了《实践通用Lisp》之后,我终于了解了宏的重大意义,并且我一直在寻找一种支持该功能的.NET平台语言。 .NET有一些Lisp的方言,但据我所知,它们要么是beta版本,要么是废弃版本。 最近,Clojure引起了我的兴趣,但它是针对Java平台的,虽然可能可以使用ikvm,但感觉并没有集成。 特别是当您想做WPF之类的事情时。

最近,我听到关于F#的耳语,我尝试查看一下文档,如果我能找到有关宏支持的任何信息,但还没有找到。 有人知道吗?

谢谢 :)


Nemerle,位于http://nemerle.org/,是一种.NET语言(也支持mono),在视觉上保持与C#的距离时,它支持许多功能编程范例。它具有广泛的宏支持。


好吧,F#基于OCaml,而OCaml具有相当广泛的宏系统。鉴于F#和OCaml在语法和语义上的相似性,您可能可以将Ocaml宏系统移植到F#。

除了窃取Ocaml的宏系统外,我不知道F#的固定宏系统。


不。 F#没有宏。


你看过嘘吗?尽管Boo没有宏,但它具有开放的编译器管道,这是用于语法元编程的宏的很好替代。

[编辑]如评论中所述,Boo现在确实具有宏。


我想我应该指出,现在有一个相当活跃的Clojure .NET / Mono端口。如问题中所述,Clojure支持LISP样式宏。

正如其他人所说,F#目前不支持宏(2010年底)。


但令人恐惧的是,这些ocaml示例中的语法看起来晦涩难懂

在那里,您遇到了与Lisp相同的基本句法折衷。如果您希望像Lisp一样的宏功能强大,您倾向于要么以类似于Lisp的语言结尾,要么您的宏语法看起来与常规语法完全不同...两种方法都没错,只是选择不同


Recently I have been hearing whisper about F#, I tried to look at the documentation if I could find anything about macro support, but haven't found it. So does anyone know?

F#不支持宏,也不太可能支持宏。


如何使用F#报价?

http://tomasp.net/blog/fsquotations.aspx


.net有两个积极开发的Lisps

IronScheme-基于DLR的方案实现

Xronos-基于DLR的Clojure端口


那可能与您想要的相反,但是您知道RDNZL吗?这是一个功能强大的接口(FFI),可让您从Lisp代码中调用.NET库。

它们很可能不比任何Common Lisp或Scheme实现成熟得多,但是.NET有Lisp方言:L#和DotLisp。


我目前正在研究F#中元编程的可能性。如果我们将宏定义为扩展为代码的文本模板,则有两种显而易见的方法:

  • T4模板。有F#的实现:https://github.com/kerams/Templatus

  • 我已经看到从字符串调用F#到单独的程序集中,然后再加载程序集的某个地方。


  • 支持平台语言通用

    最新内容

    相关内容

    猜你喜欢