This video is an overview of the Tagless Final (TF) approach.
The code for the entire series is here:
https://github.com/DevInsideYou/tagless-final
The False Hope of Managing Effects with Tagless Final in Scala (TF Critique):
https://degoes.net/articles/tagless-horror
Structure and Interpretation of Computer Programs (SICP):
https://web.mit.edu/alexmv/6.037/sicp.pdf
Oleg Kiselyov's website:
http://okmij.org/ftp/
The "Typed Tagless Final Interpreters" paper from Oleg Kiselyov's website:
http://okmij.org/ftp/tagless-final/course/lecture.pdf
If you decide to follow along with the paper, this might help:
https://gist.github.com/OlivierBlanvillain/48bb5c66dbb0557da50465809564ee80
The "Extensible Denotational Language Specifications" paper by Robert Cartwright and Matthias Felleisen:
https://pdfs.semanticscholar.org/321c/a540ce3a9beed5db54c8f8047191b8185c50.pdf
This video is part of the following playlist:
https://www.youtube.com/playlist?list=PLJGDHERh23x-3_T3Dua6Fwp4KlG0J25DI
Table of Contents:
00:00 Introduction
04:20 What problem does TF solve?
06:36 Metalinguistic Abstraction (SICP)
11:14 Tagged initial embedding
15:40 Tagless initial embedding
16:22 Origin of the "tagless final" name
16:45 What is tagless final?
18:08 Misc
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
Github: https://github.devinsideyou.com
LBRY: https://lbry.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#tf #Scala #tutorial
...
https://www.youtube.com/watch?v=XJ2NjqkWdck
In this video we will continue implementing our own version of ZIO. In this one we introduce the ZLayer DSL that allows us to create dependency graphs without using for comprehensions.
The code is here:
https://github.com/DevInsideYou/zionutshell
Table of Contents:
00:00 Intro
00:43 ZLayer DSL
09:07 Dependency Injection
11:49 ZLayer.requires
18:25 ZIO.provideSomeLayer and ZIO.provideCustomLayer
22:11 Effect Tracking
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Telegram: https://telegram.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
GitHub: https://github.devinsideyou.com
LBRY: https://lbry.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#scala #tutorial
...
https://www.youtube.com/watch?v=WjjdlhvOS7Y
In this video we will see 4 possible ways to encode the 2 common error channels for business as well as technical errors. Among them are the mtl and the bifunctor encodings. This is part 2/2.
The code is here:
https://github.com/devinsideyou/tagless-final-error-handling
Cats effect:
https://typelevel.org/cats-effect/
Cats mtl:
https://github.com/typelevel/cats-mtl
Cats mtl getting started:
https://typelevel.org/cats-mtl/getting-started.html
Izumi BIO:
https://izumi.7mind.io/bio/index.html
ZIO:
https://zio.dev/
Table of Contents:
00:00 the third encoding: Business errors: mtl.ApplicativeHanddle, Technical errors: cats.ApplicativeError
09:40 the fourth encoding: Multifunctors
35:59 recap
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
Github: https://github.devinsideyou.com
LBRY: https://lbry.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#tf #Scala #tutorial
...
https://www.youtube.com/watch?v=ZdGK1uedAE0
In this video we are going to see how easy it is to setup GraalVM on your machine and even switch back and forth between multiple JVMs.
Helpful article about environment variables:
https://help.ubuntu.com/community/EnvironmentVariables
A more in depth article about environment variables (DigitalOcean articles are usually of very high quality):
https://www.digitalocean.com/community/tutorials/how-to-read-and-set-environmental-and-shell-variables-on-a-linux-vps
GraalVM Website:
https://www.graalvm.org/
Download GraalVM Community Edition from here:
https://github.com/oracle/graal/releases
This video is part of the following playlists:
https://www.youtube.com/playlist?list=PLJGDHERh23x9adDLkme_6eqce8tPZ_kZO
https://www.youtube.com/playlist?list=PLJGDHERh23x9DbNtd7AoGlvuuejBuxrPZ
Table of Contents
01:28 update-alternatives
09:13 Environment Variables
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
Github: https://github.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#update-alternatives #JVM #Graal
...
https://www.youtube.com/watch?v=7oXIY5L6OUA
In this video we will learn about trampolines - a tail call elimination technique used in CPS programs. This is part 1/2.
The code for the entire project is here:
https://github.com/DevInsideYou/homegrown-collections
The commit from this video is here:
https://github.com/DevInsideYou/homegrown-collections/commit/3a0a15f4629a3addb52568c1d854fc83bc750de6
Trampoline wikipedia article is here:
https://en.wikipedia.org/wiki/Trampoline_(computing)
Related and very helpful Python blog article by Eli Bendersky is here:
https://eli.thegreenplace.net/2017/on-recursion-continuations-and-trampolines/
The "Stackless Scala With Free Monads" paper by Rúnar Óli Bjarnason is here:
http://blog.higher-order.com/assets/trampolines.pdf
This video is part of the following playlist:
https://www.youtube.com/playlist?list=PLJGDHERh23x-4bTASKbtwhhAuP6rYQJqE
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
Github: https://github.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#CPS #Trampoline_(computing) #tutorial
...
https://www.youtube.com/watch?v=ifr0snoXSMU
In this video we will ask questions like: "Why are Scala's type classes not encoded differently?" or "Is having more types always better?" and I don't claim to have all the answers.
Making Our Own Types and Typeclasses
http://learnyouahaskell.com/making-our-own-types-and-typeclasses
herding cats — typeclasses 102
http://eed3si9n.com/herding-cats/typeclasses-102.html
Edward Kmett - Type Classes vs. the World
https://www.youtube.com/watch?v=hIZxTQP1ifo
The Typeclass Pattern - An Alternative to Inheritance
https://www.youtube.com/watch?v=yYo0gANYViE
This video is related to the following playlist:
https://www.youtube.com/playlist?list=PLJGDHERh23x-4bTASKbtwhhAuP6rYQJqE
Tutorial: Typeclasses in Scala with Dan Rosen
https://www.youtube.com/watch?v=sVMES4RZF-8
Compose :: Melbourne 2017 - George Wilson - Type Class: The Ultimate Ad Hoc
https://www.youtube.com/watch?v=2EdQFCP5mZ8
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
Github: https://github.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#typeclasses #Scala #Haskell
...
https://www.youtube.com/watch?v=DuC39LKnJLY
In this video we will understand Git's branching model, learn about the reflog and what it means to detach the HEAD pointer. We will also keep drawing pretty pictures.
The Refined GitHub browser extension:
https://github.com/sindresorhus/refined-github
This video is part of the following playlist:
https://www.youtube.com/playlist?list=PLJGDHERh23x9DbNtd7AoGlvuuejBuxrPZ
Table of Contents:
00:00 the basic workflow masterpiece
18:34 git log --oneline --graph
21:10 detached HEAD
29:35 git reflog
33:15 SHA-1 safety concerns
38:48 git tag
Website: https://devinsideyou.com
Patreon: https://patreon.devinsideyou.com
Discord: https://discord.devinsideyou.com
Telegram: https://telegram.devinsideyou.com
Twitter: https://twitter.devinsideyou.com
GitHub: https://github.devinsideyou.com
LBRY: https://lbry.devinsideyou.com
Install scripts: https://install.devinsideyou.com
Giter8 templates: https://g8.devinsideyou.com
Spotify concentration playlist: https://code.radio.devinsideyou.com
Cheers and Happy Coding!
#SCM #VCS
...
https://www.youtube.com/watch?v=qzlHuiOnECM