Malgoに導入したい機能
落ち穂拾い
ラムダリフトが必要かどうかの判断
末尾再帰の最適化
https://hackage.haskell.org/package/llvm-hs-pure-9.0.0/docs/LLVM-AST-CallingConvention.html#t:CallingConvention
The LLVM Target-Independent Code Generator — LLVM 16.0.0git documentation
https://clig.dev/
複雑そうなもの
プリミティブ演算のオーバーロード
==
や
+
のオーバーロード
レベルベース多相型型推論
OCaml でも採用されているレベルベースの多相型型推論とは - はやくプログラムになりたい
サブタイピング
LPTK/simple-sub: Alternative algorithm for algebraic subtyping.
The Simple Essence of Algebraic Subtyping: Principal Type Inference with Subtyping Ma... (ICFP 2020) - YouTube
willtim/row-polymorphism: Example row-polymorphism implementations
Extensible records with scoped labels
オーバーロードに関するメモ
Rustによるランタイム実装
余データ
Haskellと余代数(Coalgebra) - 朝日ネット 技術者ブログ
Preface - Duo - Documentation
Further Reading - Duo - Documentation
Codata in action - Microsoft Research
Codataの話
代数的効果
限定継続
LunarMLと継続 | 雑記帳
限定継続と例外とモナド | 雑記帳
A Monadic Framework for Delimited Continuations - Microsoft Research
Compiling with Continuations and LLVM
Compiling with Continuations, or without? Whatever.
Generalized Evidence Passing for Effect Handlers Microsoft Technical Report, MSR-TR-2021-5, Apr 2021, v2
Computational expression
コンピュテーション式 - F# | Microsoft Learn
Dictionary passing style
Demystifying Type Classes
Prolog
λProlog
https://github.com/LPCIC/elpi
マクロ
パッケージマネージャー
research!rsc: Minimal Version Selection (Go & Versioning, Part 4)
依存関係解決における最大バージョン選択と最小バージョン選択について