>>189
リストの先頭の要素がhead、リストのそれ以外の部分がtail。
つまり、C++で書けば次の関数のような定義。
int length(std::list<...> body)
{
if (body.empty()) return 0;
body.pop_front();
return 1 + length(body);
}