my %by_id = %{$self->by_id};
my $state = $self->but(id_gen => { %{$self->id_gen} });
foreach my $name (keys %vars) {
-warn "assign: ${name}";
unless (blessed($vars{$name})) {
my $var = $vars{$name} = $state->allocate_var($name, $vars{$name});
$by_id{$var->id} = $var;
sub bind_var_then {
my ($self, $var, $value, $then) = @_;
- warn "Binding ".$var->id." to $value";
my $bound = $var->with_value($value);
$self->but(
by_id => { %{$self->by_id}, $var->id => $bound },
sub bind_stream_then {
my ($self, $var, $stream, $then) = @_;
- warn "Binding ".$var->id." to $stream";
my $bound = $var->with_stream($stream);
$self->but(
by_id => { %{$self->by_id}, $var->id => $bound },
my ($return) = @_;
local our $Nonlocal_Return = $return;
while (my $op = $state->next_op) {
-#::Dwarn($op);
$state = $op->run($state);
}
return $state;