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

关于.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#到单独的程序集中,然后再加载程序集的某个地方。


  • 推荐阅读

      linux常用命令c语言?

      linux常用命令c语言?,系统,工作,信息,管理,基础,命令,地址,目录,简介,时间,li

      linux命令行设置语言?

      linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,l

      linux使用命令改语言?

      linux使用命令改语言?,系统,工作,管理,电脑,设备,字符集,中文,命令,语言,虚

      c语言写linux命令?

      c语言写linux命令?,系统,工具,代码,智能,工作,环境,情况,位置,命令,文件,如何

      linux汇编语言命令?

      linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

      linux汇编语言命令?

      linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

      linux命令支持通配符?

      linux命令支持通配符?,工具,系统,命令,灵活,较大,名称,名字,环境,数字,文件,L

      linux命令是什么语言?

      linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,

      linux支持管道的命令?

      linux支持管道的命令?,通信,标准,系统,信息,地方,数据,管道,环境,设备,工具,L

      linux改语言命令行?

      linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,lin

      linux命令行c语言?

      linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linu

      c语言在linux命令?

      c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linu

      linux编写c语言命令?

      linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在

      linux改变语言命令?

      linux改变语言命令?,系统,管理,网上,官方网站,情况,服务,中文,语言,命令,终

      c语言编译linux命令?

      c语言编译linux命令?,代码,工具,环境,系统,基础,保险,百度,语言,源程序,文件

      linux常用命令语言?

      linux常用命令语言?,工作,地址,系统,信息,命令,目录,标准,管理,工具,服务,lin

      r语言命令行写linux?

      r语言命令行写linux?,环境,数据,系统,工具,简介,官网,语言,报告,软件,发展,如

      linux语言查找命令行?

      linux语言查找命令行?,系统,工作,位置,标准,地址,信息,命令,管理,时间,文件,