Попробовал. Кажется, что чего-то не хватает. Я мало пользовался каррированием, но вот такая вещь не работает:
(funcall (funcall (foo 1) 2) 3), потому что (funcall (foo 1) 2) возвращает не замыкание, а результат. Точно не знаю, но мне казалось, что так можно делать было в F#.:)