1 个不稳定版本
0.0.0 | 2021年6月10日 |
---|
4 in #held
2KB
Calypso
Calypso 是一种以命令式为主,带有一些函数式影响的编程语言,注重灵活性和简单性。
请注意,此代码仍在开发中。欢迎(并鼓励)贡献力量,但不建议在生产环境中使用,除非你准备好了迎接一些严重的挑战。或者代码完全无法工作。
示例
以下示例是 FizzBuzz 的一个实现,它会一直运行到程序 CLI 参数中指定的数字,如果没有指定则为 100。请注意,这目前是伪代码,可能会发生变化。
import standard.process.Args
fn main(args: Args) ->
args
|> _.get(0)
|> _.unwrap_or("100")
|> uint.from_string
|> _.unwrap_or(100)
|> fizzbuzz
|> _.each(&println("{}", &1))
fn fizzbuzz(max: uint): [string] ->
1.to_incl(max).map(fn n ->
case do
15.divides(n) -> "FizzBuzz",
3.divides(n) -> "Fizz",
5.divides(n) -> "Buzz",
_ -> n.to_string
end)
兼容性
当前最低支持的 Rust 版本(MSRV)是 Rust 1.66.1。
Calypso 在以下平台上自动测试:
- x86_64 linux, Rust 1.66.1
- x86_64 linux, 最新稳定版
- x86_64 linux, 最新夜间版
以及手动在 x86_64 linux 上使用最新稳定版本的 Rust 进行测试
Calypso 在以下平台上开发和测试:
- Arch Linux,最新稳定版
- 希望未来有更多……但目前我还没有基础设施来测试这些 :(
许可证
根据您选择以下任一项许可证:
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则您提交给本作品作为贡献的任何内容,根据 Apache-2.0 许可证的定义,应按上述方式双许可,不附加任何额外条款或条件。
crates.io 状态
我目前保留了一些与 Calypso 相关的包。实际上它们将被使用,但它们目前处于保留状态,以防止任何人出于恶意目的使用它们或混淆他人。
注意:版本号为
0.0.0
的包表示尚未发布。
包名称 | 版本 | docs.rs 状态 |
---|---|---|
calypso |
||
calypso_base |
||
calypso_error |
||
calypso_diagnostic |
||
calypso_filety |
||
calypso_opt |
||
calypso_parsing |
||
calypso_repl |
||
calypso_util |
有关 SaturnVM 包的状态,请参阅 其 README。
main
分支的文档可以在 此处 找到。
SaturnVM
SaturnVM是我为Calypso编写的虚拟机。它旨在基本独立,但目前可能存在一些与Calypso之间的连接或依赖关系。SaturnVM的最高层crate可以在libs/saturnvm
中找到,而一些子crate可以在libs/
下以saturnvm_*
的名称找到。calypso_vm
crate可能是一个针对Calypso的SaturnVM特定接口。
有关更多信息,请参阅其README。
标志版权
该标志是从Freepik上的图片修改而来,图片来源Flaticon。原始图片可以在这里找到或在logo-base.svg
中找到,该文件位于assets存储库中。
贡献者 ✨
感谢这些出色的人们 (emoji key)
HTG-YT 📖 ✅ |
Reza 🐛 ⚠️ 🚧 |
此项目遵循all-contributors规范。欢迎任何形式的贡献!