2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2017年7月5日 |
---|---|
0.1.0 | 2017年5月23日 |
#2632 在 解析器实现
用于 corollary
5MB
19K SLoC
Corollary: Haskell到Rust的转换
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