From 5d79d0c5d105858a9e70220f4a61756f370ed28d Mon Sep 17 00:00:00 2001 From: Ivan Oleinik Date: Sat, 16 May 2020 22:49:05 +0300 Subject: [PATCH 1/6] init lab8 --- lab8/build.sbt | 8 ++++++++ lab8/project/build.properties | 1 + lab8/src/main/scala/Main.scala | 0 lab8/src/test/scala/Test.scala | 0 4 files changed, 9 insertions(+) create mode 100644 lab8/build.sbt create mode 100644 lab8/project/build.properties create mode 100644 lab8/src/main/scala/Main.scala create mode 100644 lab8/src/test/scala/Test.scala diff --git a/lab8/build.sbt b/lab8/build.sbt new file mode 100644 index 0000000..91fc625 --- /dev/null +++ b/lab8/build.sbt @@ -0,0 +1,8 @@ +name := "lab8" + +version := "0.1" + +scalaVersion := "2.13.2" + +libraryDependencies += "org.typelevel" %% "cats-core" % "2.0.0" +libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test" \ No newline at end of file diff --git a/lab8/project/build.properties b/lab8/project/build.properties new file mode 100644 index 0000000..f37b0aa --- /dev/null +++ b/lab8/project/build.properties @@ -0,0 +1 @@ +sbt.version = 1.3.10 \ No newline at end of file diff --git a/lab8/src/main/scala/Main.scala b/lab8/src/main/scala/Main.scala new file mode 100644 index 0000000..e69de29 diff --git a/lab8/src/test/scala/Test.scala b/lab8/src/test/scala/Test.scala new file mode 100644 index 0000000..e69de29 From 3e4d7deb7f39d9b0a01a7628e07ce26f0d4396fc Mon Sep 17 00:00:00 2001 From: Ivan Oleinik Date: Sat, 16 May 2020 22:56:10 +0300 Subject: [PATCH 2/6] init lab10 --- lab10/build.sbt | 8 ++++++++ lab10/project/build.properties | 1 + lab10/src/.DS_Store | Bin 0 -> 6148 bytes lab10/src/main/scala/Main.scala | 0 4 files changed, 9 insertions(+) create mode 100644 lab10/build.sbt create mode 100644 lab10/project/build.properties create mode 100644 lab10/src/.DS_Store create mode 100644 lab10/src/main/scala/Main.scala diff --git a/lab10/build.sbt b/lab10/build.sbt new file mode 100644 index 0000000..13d06a6 --- /dev/null +++ b/lab10/build.sbt @@ -0,0 +1,8 @@ +name := "lab10" + +version := "0.1" + +scalaVersion := "2.13.2" + +libraryDependencies += "org.typelevel" %% "cats-core" % "2.0.0" +libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test" \ No newline at end of file diff --git a/lab10/project/build.properties b/lab10/project/build.properties new file mode 100644 index 0000000..f37b0aa --- /dev/null +++ b/lab10/project/build.properties @@ -0,0 +1 @@ +sbt.version = 1.3.10 \ No newline at end of file diff --git a/lab10/src/.DS_Store b/lab10/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Sat, 16 May 2020 23:02:52 +0300 Subject: [PATCH 3/6] remove lab8 --- lab8/build.sbt | 8 -------- lab8/project/build.properties | 1 - lab8/src/main/scala/Main.scala | 0 lab8/src/test/scala/Test.scala | 0 4 files changed, 9 deletions(-) delete mode 100644 lab8/build.sbt delete mode 100644 lab8/project/build.properties delete mode 100644 lab8/src/main/scala/Main.scala delete mode 100644 lab8/src/test/scala/Test.scala diff --git a/lab8/build.sbt b/lab8/build.sbt deleted file mode 100644 index 91fc625..0000000 --- a/lab8/build.sbt +++ /dev/null @@ -1,8 +0,0 @@ -name := "lab8" - -version := "0.1" - -scalaVersion := "2.13.2" - -libraryDependencies += "org.typelevel" %% "cats-core" % "2.0.0" -libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test" \ No newline at end of file diff --git a/lab8/project/build.properties b/lab8/project/build.properties deleted file mode 100644 index f37b0aa..0000000 --- a/lab8/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version = 1.3.10 \ No newline at end of file diff --git a/lab8/src/main/scala/Main.scala b/lab8/src/main/scala/Main.scala deleted file mode 100644 index e69de29..0000000 diff --git a/lab8/src/test/scala/Test.scala b/lab8/src/test/scala/Test.scala deleted file mode 100644 index e69de29..0000000 From b19670d5ef6d82b6ce4bc282f1e31115d1ffb392 Mon Sep 17 00:00:00 2001 From: Ivan Oleinik Date: Mon, 1 Jun 2020 15:30:08 +0300 Subject: [PATCH 4/6] remove extra file --- lab10/src/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lab10/src/.DS_Store diff --git a/lab10/src/.DS_Store b/lab10/src/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 1 Jun 2020 15:47:10 +0300 Subject: [PATCH 5/6] lab10 done --- lab10/build.sbt | 14 +++++++++++-- lab10/src/main/scala/Main.scala | 36 +++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/lab10/build.sbt b/lab10/build.sbt index 13d06a6..426c33d 100644 --- a/lab10/build.sbt +++ b/lab10/build.sbt @@ -2,7 +2,17 @@ name := "lab10" version := "0.1" -scalaVersion := "2.13.2" +scalaVersion := "2.12.11" libraryDependencies += "org.typelevel" %% "cats-core" % "2.0.0" -libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test" \ No newline at end of file +libraryDependencies += "org.scalatest" %% "scalatest" % "3.1.1" % "test" + +libraryDependencies += "org.typelevel" %% "cats-effect" % "1.3.0" withSources() withJavadoc() + +scalacOptions ++= Seq( + "-feature", + "-deprecation", + "-unchecked", + "-language:postfixOps", + "-language:higherKinds", + "-Ypartial-unification") \ No newline at end of file diff --git a/lab10/src/main/scala/Main.scala b/lab10/src/main/scala/Main.scala index e69de29..4549e3b 100644 --- a/lab10/src/main/scala/Main.scala +++ b/lab10/src/main/scala/Main.scala @@ -0,0 +1,36 @@ +import cats.effect.{ExitCode, IO, IOApp, Resource} +import cats.effect.concurrent.MVar +import cats.syntax.all._ + +import scala.concurrent.duration._ + +object Main extends IOApp { + def runPrinter(mvar: MVar[IO, String]): Resource[IO, Unit] = { + def rec: IO[Unit] = for { + value <- mvar.take + _ <- IO(println(value)) + _ <- rec + } yield () + + Resource.make(rec.start)(_.cancel.flatMap(_ => IO(println("printer is closed")))).void + } + + def runCounter(mvar: MVar[IO, String]): Resource[IO, Unit] = { + def rec(counter: Long): IO[Unit] = for { + _ <- IO.sleep(1.seconds) + _ <- mvar.put(counter.toString) + _ <- rec(counter + 1) + } yield () + + Resource.make(rec(0).start)(_.cancel.flatMap(_ => IO(println("counter is closed")))).void + } + + val gracefulShutdownProgram: Resource[IO, Unit] = for { + mvar <- Resource.make(MVar.empty[IO, String])(_ => IO(print("Release"))) + _ <- runCounter(mvar) + _ <- runPrinter(mvar) + } yield () + + override def run(args: List[String]): IO[ExitCode] = + gracefulShutdownProgram.use(_ => IO.never) +} \ No newline at end of file From 9f356e15c89cc479043d752b14089f2a78fc31ae Mon Sep 17 00:00:00 2001 From: Ivan Oleinik Date: Mon, 1 Jun 2020 15:48:49 +0300 Subject: [PATCH 6/6] style fix --- lab10/src/main/scala/Main.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lab10/src/main/scala/Main.scala b/lab10/src/main/scala/Main.scala index 4549e3b..059341d 100644 --- a/lab10/src/main/scala/Main.scala +++ b/lab10/src/main/scala/Main.scala @@ -26,7 +26,7 @@ object Main extends IOApp { } val gracefulShutdownProgram: Resource[IO, Unit] = for { - mvar <- Resource.make(MVar.empty[IO, String])(_ => IO(print("Release"))) + mvar <- Resource.make(MVar.empty[IO, String])(_ => IO(print("release"))) _ <- runCounter(mvar) _ <- runPrinter(mvar) } yield ()