Embed presentation
Downloaded 15 times



![Free[S, A]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-4-320.jpg)
![Free[S, A]
This is the program](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-5-320.jpg)
![Free[S, A]
This is the language](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-6-320.jpg)
![Free[S, A]
This is the type of a value it will produce (once it is run)](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-7-320.jpg)

 { .. }](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-9-320.jpg)
 { .. }
def foo(input: Int): Future[String]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-10-320.jpg)
 { .. }
def foo(input: Int): Future[String]
def bar(intput: Int): Task[String]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-11-320.jpg)
 { .. }
def foo(input: Int): Future[String]
def bar(intput: Int): Task[String]
val f: Future[String] = foo(10)
val b: Task[String] = bar(20)
val s1: String = b.unsafePerformSync](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-12-320.jpg)



































































































































![Free[S, A]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-144-320.jpg)






The document discusses making programs free using free monads. It introduces the concept of Free[S, A] as representing a program as a value of a particular type A. It demonstrates usage of Scalaz's Task type and shows how programs written with free monads can be compiled down to a lower-level language. The document encourages viewing a real-world example using the Quasar library and provides contact information for the author.



![Free[S, A]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-4-320.jpg)
![Free[S, A]
This is the program](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-5-320.jpg)
![Free[S, A]
This is the language](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-6-320.jpg)
![Free[S, A]
This is the type of a value it will produce (once it is run)](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-7-320.jpg)

 { .. }](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-9-320.jpg)
 { .. }
def foo(input: Int): Future[String]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-10-320.jpg)
 { .. }
def foo(input: Int): Future[String]
def bar(intput: Int): Task[String]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-11-320.jpg)
 { .. }
def foo(input: Int): Future[String]
def bar(intput: Int): Task[String]
val f: Future[String] = foo(10)
val b: Task[String] = bar(20)
val s1: String = b.unsafePerformSync](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-12-320.jpg)



































































































































![Free[S, A]](https://image.slidesharecdn.com/makeyourprogramsfree-170225071333/85/Make-your-programs-Free-144-320.jpg)




