diff options
Diffstat (limited to 'MLKEnvironment.m')
-rw-r--r-- | MLKEnvironment.m | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/MLKEnvironment.m b/MLKEnvironment.m index 29f7740..7119bac 100644 --- a/MLKEnvironment.m +++ b/MLKEnvironment.m @@ -137,10 +137,24 @@ -(void) addBindingForSymbol:(MLKSymbol *)symbol { - [_bindings setObject:[MLKBinding binding] + [self addBinding:[MLKBinding binding] forSymbol:symbol]; +} + +-(void) addBinding:(MLKBinding *)binding forSymbol:(MLKSymbol *)symbol +{ + [_bindings setObject:binding forKey:(symbol ? (id)symbol : (id)[NSNull null])]; } +-(void) setBinding:(MLKBinding *)binding forSymbol:(MLKSymbol *)symbol +{ + if (![self bindingForSymbol:symbol]) + [NSException raise:@"MLKUnboundVariableError" + format:@"The variable %@ is unbound.", + [symbol descriptionForLisp]]; + [self addBinding:binding forSymbol:symbol]; +} + -(MLKEnvironment *) environmentForSymbol:(MLKSymbol *)symbol { if ([_bindings objectForKey:symbol]) |