Funzione somma in javascript

In una discussione su linkedin c'era un tizio che chiedeva come scrivere una funzione che lavorasse in questo modo:

sum(1)(2) // == 3 
sum(5)(-1)(2) // == 6


La difficoltà sta nel fatto che apparentemente questa funzione dovrebbe ritornare una callable per poter essere richiamata dall'addizione successiva, oppure ritornare il valore della somma fino a quel momento.

Il trucco che ho inventato è il seguente 

function sum(a) { 
	var total = a; 
	return function(b) { 
		var me = arguments.callee; 
		total += b; 
		me.toString = function() { 
			return total; 
		} 
		return me; 
	} 
} 
var a = sum(1)(2); 
var b = sum(5)(-1)(2); 
alert(a); 
alert(b);

Il trucco sta nel ritornare sempre una callable, ma definendo in essa il metodo .toString() che ritorna il valore della somma corrente.

In questo modo, quando viene convertita in stringa avremo il numero desiderato.