これが末尾再帰を表しているかどうかを知りたいです。そうでない場合は、どうすればできますか。
countP :: [a] -> (a->Bool) -> Int
countP [] _ = 0
countP (x:xs) p = countP_aux (x:xs) p 0
countP_aux [] _ _ = 0
countP_aux (x:xs) p acumul
|p x==True = (countP_aux xs p (acumul))+1
|otherwise = (countP_aux xs p (acumul))
countP [1,2,3] (>0)
3
(72 reductions, 95 cells)
この演習では、p 条件によって検証されるリスト内の値の数を示します。ありがとう