This is a blatant copy of Atlassian’s https://blog.developer.atlassian.com/optional-broken/.

You can jump into below snippet and understand what’s the issue, and choose to skip rest of the blog.

public class Silliness {  public static void main(String[] args) {
Map<String, String> mapp = new HashMap<>();
mapp.put("afsal", null);
Optional.("afsal")
.map(mapp::get).map(String::toUpperCase)); …


This is a detailed explanation of Fix Point and Y combinator in Scala, that’s the foundation before you explore Fix at a type-level.

The blog has been moved to the below link. Sorry for the inconvenience.

https://afsalthaj.github.io/myblog/posts/2021-04-15-fix-points.html


Photo by Tamanna Rumee on Unsplash

There are wonderful libraries in Scala ecosystem for resource handling. I recommend the following as a quick start.

  1. ZManaged from ZIO (https://github.com/zio/zio)
  2. cats.effect.Resource (https://github.com/typelevel/cats)

These are superior libraries to many of those in other popular* languages, though I find the comparison is mostly with java try-with-resources. The simple story of…


How do you implement square (or double) using Monads?

Quite simple: Use the monad instance of a function and then `join` on a function that returns a function.

How on earth does that work?

You know the signature of Monad join.

join :: Monad f => f (f a) ->…


For those who need to get straight into the code with explanations as comments, please feel free to jump to:

https://scastie.scala-lang.org/afsalthaj/4rTuhrx6Tw6wohdyaP73bg/2

Others, read on !

In type-driven development, it is often necessary to distinguish between different interpretations of the same underlying type. For example, for the underlying type ‘integer’, there…


Sbt

I hope we all are much familiar with building, compiling and running Scala applications with SBT.

Developers now write SBT plugins relatively quickly, especially to standardise builds across hundreds of applications in the organisation. For instance, packaging docker, fetching org-artifactory credentials, common entry scripts etc.

IMO, it is simple enough…


Stop unreadable logs……….. !!


Its good to talk about summary in an intro:

As a summary of requirements, there shouldn’t be any more separate docker related orchestrations. Everything that you do with docker are first class citizens in the project that can run along with other test cases in your project. …


We tend to forget this quite often. An invariant functor or an exponential functor is, given A => B and B => A , it converts type A to typeB in the same context F[_]. We call this xmap .

Covariant Functor

That’s the famous Functor ! Covariant functor implements xmap


Here is my gist that combines the various algebra defined in various parts of the application, using Free Monad with in Scalaz! For those who are impatient, jump straight to line number 58, that handles what Scalaz is missing !

Well, that was useless toy example.

I think …

Afsal Thaj

A software engineer and a functional programming enthusiast at Simple-machines, Sydney, and a hardcore hiking fan. https://twitter.com/afsalt2

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store