#! /usr/bin/env ioobjc ObjcBridge autoLookupClassNamesOn buffer := "" memory := 0.0 operator := "" [NSObject newSubclassNamed:"Controller"] do( [addVariableNamed:"output"] setSlot("add:", method(sender, [self compute:sender] operator = "+" ) ) setSlot("compute:", method(sender, if(operator == "", memory = self output doubleValue) if(operator == "+", memory = memory + self output doubleValue) if(operator == "-", memory = memory - self output doubleValue) if(operator == "*", memory = memory * self output doubleValue) if(operator == "/", memory = memory / self output doubleValue) if(operator == "sqrt", memory = self output doubleValue sqrt) [self output setFloatValue:memory] operator = "" buffer = "" ) ) setSlot("clear:", method(sender, [self output setFloatValue:0.0] buffer = "" memory = 0 ) ) setSlot("digit:", method(sender, buffer = buffer .. sender tag [self output setStringValue:buffer] ) ) setSlot("div:", method(sender, [self compute:sender] operator = "/" ) ) setSlot("dot:", method(sender, buffer = buffer .. "." [self output setStringValue:buffer] ) ) setSlot("mul:", method(sender, [self compute:sender] operator = "*" ) ) setSlot("sub:", method(sender, [self compute:sender] operator = "-" ) ) setSlot("sqrt:", method(sender, operator = "sqrt" [self compute:sender] ) ) setSlot("windowWillClose:", method(notification, [NSApplication sharedApplication stop:notification])) ) ObjcBridge main