Feat: Add Pipe Node
Introduces a new `Pipe` node to the Abstract Syntax Tree (AST). This node represents a functional composition pattern, allowing for chaining of operations. The changes include: - Defining the `Pipe` variant in `BoundKind` and `UntypedKind`. - Implementing parsing logic for the `pipe` keyword. - Adding handling for the `Pipe` node in various compiler passes (analyzer, binder, captures, dumper, macros, optimizer, TCO, type checker). - Including a placeholder implementation for `Pipe` execution in the VM. - Updating integration tests to use the new `pipe` syntax.
This commit is contained in:
@@ -368,6 +368,17 @@ impl VM {
|
||||
Ok(Value::Void)
|
||||
}
|
||||
}
|
||||
BoundKind::Pipe { inputs, lambda } => {
|
||||
// To be implemented in next step:
|
||||
// 1. Create PipeStream
|
||||
// 2. Link with RootStream and Inputs
|
||||
// 3. Create and return SharedSeries
|
||||
for input in inputs {
|
||||
self.eval_internal(obs, input)?;
|
||||
}
|
||||
self.eval_internal(obs, lambda)?;
|
||||
Ok(Value::Void)
|
||||
}
|
||||
BoundKind::Block { exprs } => {
|
||||
let mut last = Value::Void;
|
||||
for e in exprs {
|
||||
|
||||
Reference in New Issue
Block a user