From 1be372285563189dba8f7ecf7b26a049f3728655 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Thu, 31 Jul 2008 12:20:07 +0200 Subject: Make keywords self-evaluate while interning, not while reading. --- MLKPackage.m | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'MLKPackage.m') diff --git a/MLKPackage.m b/MLKPackage.m index 2757455..3153b74 100644 --- a/MLKPackage.m +++ b/MLKPackage.m @@ -16,6 +16,7 @@ * along with this program. If not, see . */ +#import "MLKDynamicContext.h" #import "MLKPackage.h" #import "MLKSymbol.h" #import "NSObject-MLKPrinting.h" @@ -267,6 +268,17 @@ static NSMutableDictionary *packages = nil; [_accessible_symbols setObject:symbol forKey:name]; [_present_symbols addObject:symbol]; + + if ([_name isEqual:@"KEYWORD"]) + { + // Make keyword symbols self-evaluate. + [[MLKDynamicContext globalContext] addValue:symbol forSymbol:symbol]; + + // Make them external as well. + [self export:symbol]; + + // FIXME: Should finally make them constant, see CLHS 10.2, Type KEYWORD. + } } -(void) inherit:(MLKSymbol *)symbol @@ -290,6 +302,17 @@ static NSMutableDictionary *packages = nil; [self descriptionForLisp]]; [_accessible_symbols setObject:symbol forKey:name]; + + if ([_name isEqual:@"KEYWORD"]) + { + // Make keyword symbols self-evaluate. + [[MLKDynamicContext globalContext] addValue:symbol forSymbol:symbol]; + + // Make them external as well. + [self export:symbol]; + + // FIXME: Should finally make them constant, see CLHS 10.2, Type KEYWORD. + } } -(void) uninherit:(MLKSymbol *)symbol -- cgit v1.2.3