C是否有类似Haskell/ML的编译器?

Len*_*low 18 iphone scheme haskell sml gambit

人们已经在Scheme中为iPhone 写过游戏.因为(某些)Scheme编译器可以编译为C,所以很容易与Objective-C混合并与XCode集成.

知道 Haskell和OCaml编译器的补丁,以启用ARM/iOS后端.但那些看似非官方的,实验的/不稳定的.

我更喜欢静态haskell/ML类型系统而不是Scheme的动态类型.是否有一个稳定的ML/SML/Haskell编译器生成C代码,以便它可以像Scheme/Gambit-C一样使用?

Joh*_*n L 15

我无法帮助ML,但你看过JHC吗?JHC是针对便携式C的整个程序优化Haskell编译器,可以通过put添加iPhone支持

[iphone]
cc=arm-apple-darwin-gcc
merge=le32
Run Code Online (Sandbox Code Playgroud)

在〜/ .jhc/targets.ini中

Haskell wiki和JHC手册中有更多Haskell信息.

  • 我有很多使用JHC的经验,功能完整性不是问题(除了扩展),当前版本的jhc的问题是代码生成器的稳定性,有时复杂的表达式会产生错误的C代码,I一直试图帮助确定一些已修复的问题,但似乎仍存在问题.您还要确保启用-fjgc已经过更多测试(并且可以帮助生成有效的C代码)而不使用GC,如果您正在使用FFI库,则启用--optc =' - fno-strict-aliasing' . (4认同)
  • JHC是AFAIK几乎完全实现Haskell98(有一些差距,但非常小的IIRC),但它不支持所有GHC的扩展,如MPTC.您编译错误的链接似乎是针对GHC的测试套件; 我不希望JHC能够编译大部分代码,因为它必然需要GHC特定的扩展. (2认同)

til*_*ave 6

(我不确定此工具链是否已经专门针对iPhone进行了尝试.)

MLTon是一个优化标准ML编译器的整个程序.您可以通过-keep g在编译时传递给MLTon 来保留您的C代码,例如:

c:/Program Files (x86)/MLton/bin/mlton.bat" -verbose 1 -keep g test.sml

它也可以生成ARM代码本身.