1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2017年5月23日

#58#haskell

MIT/Apache

1KB

推论:Haskell 到 Rust 的转换

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

推论是一个非常实验性的 Haskell 到 Rust 编译器。目标是自动将 Haskell 转换为 Rust 语法,并允许用户手动完成转换为 Rust 习惯性代码。通过在 corollary-support 中对 Haskell 方法的(非常宽松的)适配,可以加速完整移植的过程。

当前状态:寻找维护者。 推论可以解析和翻译整个文件,结果各不相同。在 Haskell 的 C 解析库移植 language-c 中,使用了针对源代码的特定黑客技术以及手动翻译。

由于此项目是为了移植单个库而专门设计的,因此您将在代码库中发现针对源代码的特定黑客技术,尽管它们最终应该被删除。以下问题尚无解决方案

  • Haskell 的模块和导入系统
  • Haskell 的垃圾收集(由于 Haskell 的值是不可变的,因此我们在传递时自由地 .clone() 大多数值)
  • 没有显式类型声明的顶层函数
  • Monads 和 HKT
  • 尾递归
  • 真正的惰性
  • 或者柯里化(缺乏更好的方式来涉及 Haskell 的类型分析)。

使用

推论可以作为二进制文件使用

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

这会将单个源文件从 Haskell 转换为 Rust。您可以省略 -o 参数以将文件写入 stdout。此外,您可以使用 --run 参数运行文件。

推论将删除任何在 {-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代码的支撑包。

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

参考文献

许可证

Corollary和parser-haskell按照MIT或Apache-2许可证发布,任选其一。

无运行时依赖