From b4733e54dacffd34f0e81268e21417c0ef332be5 Mon Sep 17 00:00:00 2001 From: Mark Canlas Date: Sun, 4 Dec 2022 16:46:43 -0500 Subject: [PATCH] inter flatmap --- .../com/htmlism/firepower/demo/str/Paragraph.scala | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/str/Paragraph.scala b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/str/Paragraph.scala index 8ed121d..9a81cb9 100644 --- a/firepower-demo/src/main/scala/com/htmlism/firepower/demo/str/Paragraph.scala +++ b/firepower-demo/src/main/scala/com/htmlism/firepower/demo/str/Paragraph.scala @@ -7,20 +7,16 @@ package com.htmlism.firepower.demo.str case class Paragraph(xs: List[String]) object Paragraph: - val blankLine: Paragraph = - Paragraph(List("")) - def apply(xs: String*): Paragraph = Paragraph(xs.toList) def mkLines(ps: List[Paragraph]): List[String] = - interlace(blankLine)(ps) - .flatMap(_.xs) + interFlatMap(ps)("", _.xs) - private def interlace[A](x: A)(xs: List[A]): List[A] = + def interFlatMap[A, B](xs: List[A])(x: B, f: A => List[B]): List[B] = xs match case head :: tail => - head :: tail.flatMap(a => List(x, a)) + f(head) ::: tail.flatMap(a => x :: f(a)) case Nil => Nil