From d09eca7de596aa392787fab565ba5eb4767d6b35 Mon Sep 17 00:00:00 2001 From: Pawel Szulc Date: Tue, 11 Apr 2017 13:42:04 +0200 Subject: [PATCH 1/2] Change repeatedly back to be a function (not a method) --- core/shared/src/main/scala/matryoshka/package.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/shared/src/main/scala/matryoshka/package.scala b/core/shared/src/main/scala/matryoshka/package.scala index 50da020c..2f0443d5 100644 --- a/core/shared/src/main/scala/matryoshka/package.scala +++ b/core/shared/src/main/scala/matryoshka/package.scala @@ -681,8 +681,8 @@ package object matryoshka { * * @group algtrans */ - @tailrec - final def repeatedly[A](f: A => Option[A])(expr: A): A = + final def repeatedly[A]: (A => Option[A]) => A => A = + (f: A => Option[A]) => (expr: A) => f(expr) match { case None => expr case Some(e) => repeatedly(f)(e) From dc3e1ce09922430531101c833645609a991103af Mon Sep 17 00:00:00 2001 From: Pawel Szulc Date: Tue, 11 Apr 2017 13:53:10 +0200 Subject: [PATCH 2/2] Add missing ginterpret --- core/shared/src/main/scala/matryoshka/patterns/package.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/shared/src/main/scala/matryoshka/patterns/package.scala b/core/shared/src/main/scala/matryoshka/patterns/package.scala index c6977e71..1ff4c8b1 100644 --- a/core/shared/src/main/scala/matryoshka/patterns/package.scala +++ b/core/shared/src/main/scala/matryoshka/patterns/package.scala @@ -54,6 +54,9 @@ package object patterns { AlgebraM[M, CoEnv[A, F, ?], B] = ginterpretM[Id, M, F, A, B](f, φ) + def ginterpret[W[_], F[_], A, B](f: A => Id[B], φ: GAlgebra[W, F, B]): GAlgebra[W, CoEnv[A, F, ?], B] = + ginterpretM[W, Id, F, A, B](f, φ) + def ginterpretM[W[_], M[_], F[_], A, B](f: A => M[B], φ: GAlgebraM[W, M, F, B]): GAlgebraM[W, M, CoEnv[A, F, ?], B] = _.run.fold(f, φ)