From efad95ec36837acdcc1aa4012675aabf0b72c756 Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Fri, 27 Jun 2008 15:01:07 +0200 Subject: MLKInterpreter: Correctly handle multiple values. --- MLKReadEvalPrintLoop.m | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'MLKReadEvalPrintLoop.m') diff --git a/MLKReadEvalPrintLoop.m b/MLKReadEvalPrintLoop.m index 4ccc339..e9e90db 100644 --- a/MLKReadEvalPrintLoop.m +++ b/MLKReadEvalPrintLoop.m @@ -27,6 +27,7 @@ #import #import +#import #import #import @@ -87,7 +88,7 @@ static const char *prompt (EditLine *e) { if (line_length > 1) { NSAutoreleasePool *pool; - id result; + NSArray *results; id code; pool = [[NSAutoreleasePool alloc] init]; @@ -96,18 +97,25 @@ static const char *prompt (EditLine *e) { NS_DURING { + int i; + code = [MLKReader readFromString:[NSString stringWithUTF8String:line]]; - result = [MLKInterpreter eval:code - inLexicalContext:[MLKLexicalContext - globalContext] - withEnvironment:[MLKLexicalEnvironment - globalEnvironment]]; - - if (result) - printf ("%s\n", [[result descriptionForLisp] UTF8String]); - else - printf ("()\n"); + results = [MLKInterpreter eval:code + inLexicalContext:[MLKLexicalContext + globalContext] + withEnvironment:[MLKLexicalEnvironment + globalEnvironment]]; + + for (i = 0; i < [results count]; i++) + { + id result = [results objectAtIndex:i]; + if (result != [NSNull null]) + printf ("%s\n", [[result descriptionForLisp] UTF8String]); + else + printf ("()\n"); + } + } NS_HANDLER { -- cgit v1.2.3