いや、flattenを3引数にして、その第一節の第三引数をRにする、
flatten([],R,R).
だけで大変なことなんだよ。ヒントなしに初心者に課題として与えたら、
三ヶ月かかる。>>796に書いたように、ほとんど無意識に指が勝手に動く
感じでこういう述語定義ができることはもっと評価されていい。
Haskellのスレの連中のようにならならいように気をつけよう。