length :: [a] -> Int
length [] = 0
length (x:xs) = 1 + (length xs)

ループより分かりやすくね?
まぁ  リストの長さなら
def length[A](list:List[A]):Int = list.foldLeft(0)((total,_)=>total + 1)
みたいにfold使った方がいいかもわからんが