= Nothing gen d = Just (d `mod` 10, d `div` 10) > digits 2718 [2,7,1,8] > group n = unfoldr gen where gen [] = Nothing gen xs = Just (take n xs, drop n xs) > group 3 [1,2,3,4,5,6,7,8,9,10,11] [[1,2,3],[4,5,6],[7,8,9],[10,11]] ๐ข๐๐๐๐๐๐ฟ! โท ๐ฝ โ ๐ด๐๐๐๐ (๐ผ, ๐ฝ) โ ๐ฝ โ ๐ณ๐๐๐ ๐ผ ๐ข๐๐๐๐๐๐ฟ! ๐ ๐ข = ๐๐๐ฌ๐ ๐ ๐ข ๐จ๐ ๐ต๐๐๐๐๐๐ โ ๐ต๐๐ ๐ฑ๐๐๐ (๐ฅ, ๐ฃ) โ ๐ช๐๐๐ ๐ฅ (๐ข๐๐๐๐๐๐ฟ! ๐ ๐ฃ) scala> def digits(n: Int): List[Int] = | LazyList.unfold(n): | case 0 => None | case x => Some(x % 10, x / 10) | .toList.reverse | def digits(n: Int): List[Int] scala> digits(2718) val res0: List[Int] = List(2, 7, 1, 8) scala> def group[A](n: Int, as: List[A]): List[List[A]] = | LazyList.unfold(as): | case Nil => None | case xs => Some(xs.take(n), xs.drop(n)) | .toList | def group[A](n: Int, as: List[A]): List[List[A]] scala> group(3, List(1,2,3,4,5,6,7,8,9,10,11)) val res0: List[List[Int]]=List(List(1,2,3),List(4,5,6),List(7,8,9),List(10,11)) unfoldr unfold