diff options
author | Matthias Andreas Benkard <matthias@benkard.de> | 2008-07-26 19:23:28 +0200 |
---|---|---|
committer | Matthias Andreas Benkard <matthias@benkard.de> | 2008-07-26 19:23:28 +0200 |
commit | 0f7abae8b9525d60685ae3b9ecc2fb4131c766a4 (patch) | |
tree | 252c9c9e8c211b2e96ce7a764eff36c579fa7e18 /MLKRoot.m | |
parent | ac3c67818eaaf7e72e039bff93e4226f086b07e8 (diff) |
Reader: Support quasiquotation.
Diffstat (limited to 'MLKRoot.m')
-rw-r--r-- | MLKRoot.m | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -225,10 +225,12 @@ static id truify (BOOL value) +(NSArray *) macroexpand_1:(NSArray *)args { id form = [args objectAtIndex:0]; - id env = [args count] > 1 ? [args objectAtIndex:1] : nil; + id env = [args count] > 1 ? denullify([args objectAtIndex:1]) : nil; MLKLexicalContext *context = env ? (id)env : (id)[MLKLexicalContext globalContext]; - if ([context symbolNamesMacro:[form car]]) + if ([form isKindOfClass:[MLKCons class]] + && (![form car] || [[form car] isKindOfClass:[MLKSymbol class]]) + && [context symbolNamesMacro:[form car]]) { id <MLKFuncallable> macrofun = [context macroForSymbol:[form car]]; form = denullify ([[macrofun applyToArray: |