関数型言語では宣言的な関数を用いることが推奨されるのでループで++みたいな手続きをそのまま書くのはノットソークールだと。慣れたら再帰で書くほうが直感的になる感、チョットわかった。 def sumList(list:List[Int]): Int = { list match { case Nil => 0 case x::list => x + sumList(list) } } これが全然理解できなかったんですよ。特にここが。 case x::list => x + sumList(list) この再帰を抜けるためにはsumlistで指定されたリストがNilになるしかない。つまり、再帰で呼び出される度にtailし続けなくてはいけない。それがなんで「x::list」で出来るのか、全然理解できなかった。 聞くは一時の恥、聞かぬは一生の恥。stackoverflowを使わせて頂きました。 ja