scala> Seq(1, 2, 3).tail
res5: Seq[Int] = List(2, 3)
scala> Seq.empty[Int].tail
java.lang.UnsupportedOperationException: tail of empty list
at scala.collection.immutable.Nil$.tail(List.scala:433)
at scala.collection.immutable.Nil$.tail(List.scala:428)
... 40 elided
WartRemover で tail -> drop(1)
に変えろと言われるのはこういうことらしい。
- こういうメジャーどころのメソッドで実行時例外が起きて
- 代替手段が
drop(1)
みたいなブサイクなやつ
だと、なんか萎えるなぁという気持ち。
ちなみに Haskell も標準の List に単純に tail すると Exception
を吐く。
関数型界隈で tail
といえばこの動作なんだろうか??
Prelude> tail []
*** Exception: Prelude.tail: empty list