前にEmacsLispで書いた記憶があるな。
普通かっこの部分はcalculateに渡して再帰させるんじゃない?