diff options
author | Matthias Andreas Benkard <matthias@benkard.de> | 2008-07-31 12:20:07 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <matthias@benkard.de> | 2008-07-31 12:20:07 +0200 |
commit | 1be372285563189dba8f7ecf7b26a049f3728655 (patch) | |
tree | fe430c7070f886ab8b7fc1bd1a3e5f2067bf4038 /MLKPackage.m | |
parent | 604cc04c18af75e65b52a6b22b98d0f687d047c7 (diff) |
Make keywords self-evaluate while interning, not while reading.
Diffstat (limited to 'MLKPackage.m')
-rw-r--r-- | MLKPackage.m | 23 |
1 files changed, 23 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>. */ +#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 |