2个不稳定版本

使用旧的Rust 2015

0.2.0 2017年7月5日
0.1.0 2017年5月23日

#2632解析器实现


用于 corollary

MIT/Apache

5MB
19K SLoC

Corollary: Haskell到Rust的转换

https://img.shields.io/crates/v/corollary.svg

Corollary是一个非常实验性的Haskell到Rust编译器。目标是自动化Haskell到Rust的语法转换,让用户手动完成转换到惯用Rust代码。此外,通过(非常宽松的)对corollary-support中的Haskell方法进行适配,可以加快完整移植的过程。

当前状态:寻找维护者。Corollary可以解析和翻译整个文件,结果各不相同。针对特定源代码的修改和手动翻译用于Haskell的C解析库的语言-c移植。

由于该项目是为了移植单个库而专门构建的,你会在代码库中发现针对特定源代码的修改,但最终应该移除。以下问题尚未找到解决方案

  • Haskell的模块和导入系统
  • Haskell的垃圾回收(由于Haskell值是不可变的,我们慷慨地在传递时使用.clone()复制大多数值)
  • 没有显式类型声明的顶层函数
  • Monads和HKT
  • 尾递归
  • 真正的惰性
  • Or currying (没有更好的方式来分析Haskell的类型)

Usage (使用)

Corollary可以作为二进制使用

cargo install corollary
corollary input/file/path.hs -o target/output.rs

转换源文件从Haskell到Rust的命令

推论将移除代码块{-HASKELL-} ... {-/HASKELL-}中的任何代码,并将文件中嵌入的{-RUST ... /RUST-}块中的任何代码包含在内。(参见corollary/test以获取示例。)这允许你在Haskell文件自包含(不依赖于Haskell的模块系统)的情况下直接运行--run

开发

克隆此存储库及其测试依赖项

git clone http://github.com/tcr/corollary --recursive

此存储库包含以下crates

  • parser-haskell/,一个使用LALRPOP编写的原始Haskell解析器。
  • corollary/,一个实验性的Haskell到Rust编译器。
  • corollary-support/,用于转换的Haskell代码的支持crates。

此外,在deps/目录中存在用于测试Corollary的库。

参考文献

许可证

Corollary和parser-haskell根据您的要求许可为MIT或Apache-2。

依赖项

~4.5MB
~99K SLoC