 		 */
 		public function compiledObjectIsFunctionDefinition(compiledObject:ICompiledObject):Boolean
 		{
-			return compiledObject is CompiledFunctionCall && (compiledObject as CompiledFunctionCall).evaluatedMethod == operators[FUNCTION];
+			var cfc:CompiledFunctionCall = compiledObject as CompiledFunctionCall;
+			return cfc && (cfc.evaluatedMethod == operators[FUNCTION] || cfc.evaluatedMethod == operators['=>']);
 		}
 		
 		/**

				
				// '{' or '(' group that does not correspond to a function call
				
				if (leftBracket == '(' && compiledParams.length == 0 && token != FUNCTION)
					throw new Error("Missing expression inside parentheses");
				
				if (leftBracket == '(' && statements.hasOwnProperty(token) && statements[token])

			if (Math.max(tokens.indexOf('?'), tokens.indexOf(':')) >= 0)
				throw new Error('Invalid conditional branch');
			
			// next step: inline functions, right to left
			i = tokens.length;
			while (i--)
			{
				if (tokens[i] == FUNCTION)
					tokens.splice(i, 3, compileOperator(FUNCTION, [tokens[i + 1], tokens[i + 2]]));
				if (tokens[i] == '=>')
					tokens.splice(i - 1, 3, compileOperator('=>', [tokens[i - 1], tokens[i + 1]]));
			}
			
			// next step: function applications
			for (i = 0; i < tokens.length; i++)
			{
				call = tokens[i] as CompiledFunctionCall;
				if (call && call.evaluatedMethod == operators[','] && tokens[i - 1] is ICompiledObject)
					tokens.splice(i - 1, 2, new CompiledFunctionCall(tokens[i - 1], call.compiledParams));
			}
			
			// next step: variable assignment, right to left
			while (true)
			{
