3c0f2ec8ce
correctly initialize the `TypeChecker` with argument types during macro expansion. - Refactor `Specializer::compile` to perform type checking with provided arguments before specialization and to correctly extract the return type. - Enhance the `Dumper` to introspect and display specialized closure bodies. - Update `LambdaCollector` to use `BoundNode` consistently. - Modify `TypeChecker` to accept and inject specialized argument types for lambdas.
17 lines
483 B
Markdown
17 lines
483 B
Markdown
|
|
- Macro expansion
|
|
- Binding
|
|
- var lambdas
|
|
- Linking(var lambdas)
|
|
-Typechecker::check_with_args(template, ())
|
|
- lambdas = Lambda Collection <- fills registry
|
|
- Specializing call, say (tak int int int)
|
|
- found in lambdas: (tak any any any)->any
|
|
- var local_lambdas
|
|
- recurse Linking(var local_lambdas):
|
|
- TypeChecker::check_with_args(template, args)
|
|
- local_lambdas = Lambda Collection
|
|
- Specializing
|
|
....
|
|
- TCO
|