#静态类型 #haskell #函数式 #ml #可扩展 #推断 #多态

app wysk

一个静态类型、函数式编程语言,具有类型推断、临时多态和可扩展的运算符语法。受到Rust、ML和Haskell的影响。

1 个不稳定版本

0.1.0 2022年5月7日

584编程语言

MIT 协议

10KB
167

Wysk

受Haskell、ML和Rust启发的静态类型、函数式编程语言。此语言实质上是以前(不完全)实现的所有语言的重新编写和重新设计,但强调模块化(理想情况下非单体)代码。

我在编译器开发方面经验尚浅,因此这个项目——以及其文档——非常是处于进行中的状态。

目标

以下是我希望实现的一些功能。

  • 代数数据类型
  • 类型类/系统重载
  • Hindley-Milner 类型推断
  • 可扩展记录
  • 交互式字节码解释器
  • LLVM JIT 编译

待办事项

  • 实现项目清单序列化/反序列化器
  • 设计范围以允许对源代码进行字节索引
  • 线程安全的手写字符串互斥器。
  • 将词素和令牌定义分开以最小化占用空间并促进错误报告
  • 修改词法分析器以依赖于字节位置而不是字符索引
  • 设计模块友好型和多态的抽象语法树(AST),以促进后续简化和分析阶段
  • 实现解析器以允许在后续句法分析中重用代码
  • 实现后解析传递以反映用户定义的运算符优先级和结合性(来自同一模块的定义或依赖项)
  • 实现标识符重命名传递以识别名称冲突并为涉及实体生成唯一名称
  • 在词法分析和解析中实现(卫生)宏的支持
  • 改进词法分析器错误报告以包含上下文
  • 将错误处理统一到自己的库中
  • 美化错误消息
  • 向错误消息添加建议
  • 实现静态类型推断引擎(Hindley-Milner+)
  • 实现全局(模块级)和局部(实体定义级)作用域的依赖关系分析
  • 将实体建模为图并找到强连通分量(SCCs)以识别递归依赖关系
  • 实现图归约方案
  • 对字节码(以及实现简单的基于栈的虚拟机?)进行建模
  • 作为字节码解释器实现REPL
  • 在Rust/C中实现原语以及stdlib/prelude
  • 实现无标记的G机(STG)
  • 实现编译器接口
  • 添加对LLVM的支持
  • 实现文档生成并与其文档注释集成

一些阅读材料

以下内容可能并非直接涉及此编译器的开发,但已证明是宝贵的参考资料。

无运行时依赖