Objective-C的跨平台功能语言

Nek*_*ios 4 ocaml haskell functional-programming cross-platform llvm

编辑:花了几个小时研究这个,我不认为我会找到任何实际上最终会节省我时间的东西,相比于找到合适的语言,合适的绑定和维护该环境的时间和精力面对所有这些平台的变革.我接受的答案似乎是最现实的,因为对大多数人来说这是最好的主意.我从这些对话和其他人那里得到的意见是,唯一真正的前进方向是使用可以在没有外部绑定的情况下运行的功能语言,或者使用由F#等商业实体维护的绑定.这是太多的工作和太少的需求,而野外可用的状态反映了这一点.我希望有一天能改变.

我想在我的软件中开始使用一种函数式语言,除了 Objective-C这是我的主要语言(C可能作为绑定工作吗?).必须是跨平台的,即Windows,Linux,OSX(x86)和iOS(ARM).我应该使用什么,如何实现这一目标?

我打算很快切换到LLVM后端和Clang for Objective-C,如果这有任何区别的话.

我没有任何功能语言的"知识投资",虽然我已经搞砸了一些.我正在从头开始学习,所以如果可能的话,我想学习一些非奥术的东西

  • 解决方案必须是真实的,有很多初步或原型工作,但..
  • 我正在使用目标C,我确实需要Cocoa绑定; 因为我的大量数据都在使用Cocoa类型,所以事情会变得很糟糕.另外,objective-c消息传递会阻止我在静态C函数和Objective-C对象实例之间创建粘合代码(这已经是Objective-c方法调用正在内置的...)
  • 对于静态链接,解决方案必须是安全许可证(iOS要求)

以下是我想要做的事情的例子:

  • 处理字节语言,例如网络协议
    • 输入:字节和长度以及'调用'objective-c方法实例
    • 输出:返回调用objective-c方法实例,发送cocoa-container参数
  • 在棋盘游戏中做出关于最佳"移动"的决定
    • 输入:包含可可的状态数据,'调用'objective-c方法实例
    • 输出:可能改变状态数据,可能调用任意的objective-c方法,然后返回调用objective-c方法实例,发送它cocoa-container参数

Jef*_*eld 6

正如DanielBünzli所提到的,我们有一个OCaml iPhone应用程序,现在可以在iPhone应用程序商店中出售.(这是一款名为卡西诺的纸牌游戏,如果你想寻找它.)苹果在2010年9月放弃了他们的语言限制,我们没有遇到任何阻力(尽管我们当然是一个非常小的玩家).

我在OCaml中编写了一些用于编写iOS应用程序的教程示例,您可以在我们的网站上找到:

http://psellos.com/ocaml/example-app-portland.html
http://psellos.com/ocaml/example-app-slide24.html

您没有提到您是否希望GUI代码是跨平台的.这是一个更难的问题.我们的代码使用瘦包装器来访问本机Cocoa Touch库,这些库不能在Linux或Windows上运行.它们在OS X上工作(至少是一个子集).您可以在教程示例中看到一些自定义(简化)Cocoa Touch包装器.

OCaml肯定适用于您提到的所有系统.对我来说这似乎是一个不错的选择(有点偏颇的OCaml爱好者).