是否可以在Xamarin中使用Clojure CLR与C#一起使用?

6

我喜欢Clojure。它是我最喜欢的语言。

我刚刚发现了Xamarin,它允许您拥有跨平台应用程序,并充分利用本地库。与之一起使用的语言是C#。

现在我想知道是否有任何方法可以使用Clojure(CLR)编写大部分Xamarin应用程序,而不是使用C#。


1
正常的Clojure已经是跨平台的,并允许使用本地库。您能否更具体地说明您想要实现什么?如果您只是想要跨平台本地图形库,您可以查看LibGDX,它可以从Clojure中运行良好。 - mikera
2个回答

2

因此,Clojure CLR将允许您使用它可以加载的任何库。例如,我已经将Oracle.DataAccess库和NLog库加载到Clojure CLR中,因此理论上可以以同样的方式加载Xamarin库:

;;; not sure which library you want to include, using this as a placeholder
(assembly-load-from "C:/Path/To/Xamarin.Core.dll")

话虽如此,Xamarin本身似乎也是一个IDE,并且基于他们自己的专有库和构建工具,所以可能无法完全集成两者。另外,我认为Xamarin纯粹使用C#,因此直接使用Clojure进行编码可能不可行。
您可以在Clojure CLR中创建一些库,并将它们编译成DLL,然后链接它们,因此您可以在Clojure中构建大部分逻辑,然后创建一些简单的C#包装器来消耗您的Xamarin应用程序。
我很想听听您尝试的结果,以及您是否成功。
祝好运!

抱歉,我本意是引用你的话,但却误发了评论。感谢您的解释(我想点赞,但我的声望不够)!您能在Xamarin:Android/iOS项目中使用自定义DLL吗? - Luke Martin
我不能百分之百确定,但我想你可以,只要它们被编译并且可以在Mono下加载。我唯一需要提醒的是Clojure CLR确实使用动态语言运行时,如果你将其部署到移动平台上,可能会出现意外情况。不过试一试也无妨。 - Maurice Reeves

0
在安卓系统中可能会,但在iOS的情况下,我认为不太可能,因为后者在生成代码、反射等方面有很多限制。而且Clojure是动态类型的,很容易受影响。
老实说,在.NET世界中,Clojure更适合与F#(也是函数式的,默认是不可变的等等)搭配使用,这种语言刚刚被Xamarin正式采纳(意味着你可以在Android、iOS和Mac上使用它)。
它也是静态类型的(与Clojure相反),所以这可能意味着它也更快。试试吧!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接