Skip to content

Latest commit

 

History

History
33 lines (25 loc) · 714 Bytes

day26.md

File metadata and controls

33 lines (25 loc) · 714 Bytes

Exercise D26-1 answer

  given listMonad: Monad[List] with
    def unit[A](a: => A) = List(a)

    extension[A] (fa: List[A])
      def flatMap[B](f: A => List[B]) =
        fa.flatMap(f)

  given optionMonad: Monad[Option] with
    def unit[A](a: => A) = Some(a)

    extension[A] (fa: Option[A])
      def flatMap[B](f: A => Option[B]) =
        fa.flatMap(f)

Exercise D26-2 answer

  def sequence[A](fas: List[F[A]]): F[List[A]] =
    fas.foldRight(unit(List[A]()))((fa, acc) => fa.map2(acc)(_ :: _))
//    the other way
//    traverse(fas)(fs => fs) 

Exercise D26-3 answer

  def replicateM[A](n: Int, fa: F[A]): F[List[A]] =
    sequence(List.fill(n)(fa))