Do notation now supports indexed monads (
65b3453)
DoOps gained splitMonadApp? and mkMonadApp, letting elabDoWith decompose and rebuild monad applications that carry instance arguments, such as indexed monads like Measure α. This removes a hard-coded m α assumption and makes custom do-elaboration work with a broader class of monads.
String comparison is now backed by a dedicated runtime primitive (
a3fff15)
String.compare was given an extern binding to a new C++ lean_string_compare implementation, so ordering can be computed directly instead of via the generic compareOfLessAndEq path. That should reduce comparison overhead for any code that orders strings.
Other misc changes
- Do elaborator refactor: rename
mkMonadicTypetomkMonadAppacross builtindosupport and related call sites (
da8bcf7) - String-processing cleanup across compiler/docs/repr code, removing more
String.lengthuses (
ada1696) - More string/path refactors for
FilePathandStringutilities, including ASCII-length assumptions and slice-based path handling (
fa23847) - Stage0 rebuilt to pick up the runtime/stdlib changes (34df732)
- Prep work for the
String.compareoptimization in runtime and headers (
8398048)