Hai 2 possibilità:
codice:
sum([]) = 0
sum([H|T]) = H + sum(T)
codice:
sum'([], A) = A
sum'([H|T], A) = sum'(T, H+A)

sum(L) = sum'(L, 0)
è pseudo-codice:

[] -> lista vuota
[H|T] -> H:Head, T:Tail
A -> Accumulator
function(parameter_1, parameter_2, ..., parameter_n) -> parameter rappresenta un caso (un po' come lo switch in C o il pattern matching nei linguaggi funzionali)