Image for post
Image for post

Today we are going to deep dive into the Scala Cats again to find out about Monoids. If you haven’t already read my post about Diving into Scala Cats — Semigroups I suggest you do so now.

What are Monoids?

The Monoid extends Semigroup and adds a default or fallback value for the given type. Monoid type class comes with two methods - one is the combine method of Semigroups, and another one is the empty method that performs identity operation.

In the post about Semigroups, we saw an example where we’re using Semigroups along with Scala’s fold() to operate on a collection of…


Image for post
Image for post

New to Cats? No worries, go through my previous article Getting Started with Scala Cats to understand how amazing Cats is.

In this article, we will cover the concepts and implementation of Semigroups in Cats.

What are Semigroups?

In functional programming terms a Semigroup is a concept which encapsulates aggregation with an associative binary operation.

The Semigroup type class comes with a method combine which simply combines two values of same data type by following the principle of Associativity.

combine method is constructed as:

trait Semigroup[A] {
def combine(x: A, y: A): A
}

and can be implemented as:

// The type class definition
import cats.kernel.Semigroup


Image for post
Image for post

Introduction

This article is about Scala Cats. It is a library that provides the abstraction for functional programming in the Scala programming language. The name is a playful shortening of the word category.

Cats is a lightweight, modular, and extensible library for functional programming.

Cats contains a wide variety of functional programming tools and allows developers to pick the required ones. The majority of these tools are delivered in the form of type classes that we can apply to existing Scala types.

What are Type Classes?

Type classes are a programming pattern originating in Haskell. They allow us to extend existing libraries with new functionality, without using traditional inheritance, and without altering the original library source code. …


This blog was first published on Knoldus Blogs

Image for post
Image for post

This series is all about the taste of Scala.
It is best suitable for all the newbies in Scala.

You may also like:
Scala Beginner Series (1) : Basics
Scala Beginner Series (2) : Object Oriented Scala

In the previous part, we covered the:

  • Classes, constructors, inheritance, and abstract classes
  • Traits and anonymous classes
  • Singleton objects and companion objects
  • Case classes and case objects

This article will cover the functional nature of the Scala language.

Pure Functions

The first fundamental concept of functional Scala is pure functions.

Here is a very strict definition of…


This blog was first published on Knoldus Blogs

Image for post
Image for post

Overview

According to the Reactive Manifesto, a critical element in any Reactive system is that it is message-driven. But what does it mean to be message-driven?

Message-driven systems are those that communicate primarily through asynchronous and non-blocking messages. Messages enable us to build systems that are both resilient, and elastic, and therefore responsive under a variety of situations.

Message Driven Architecture

We have various ways of accomplishing synchronous and asynchronous messaging. But when we try to use synchronous messages to accomplish the task where an asynchronous message is required or vice-versa, things break down. …


This blog was first published on Knoldus Blogs

Image for post
Image for post

This series is all about the taste of Scala.
It is best suitable for all the newbies in Scala.

You may also like: Scala Beginner Series (1) : Basics

In the previous part, we covered:

  • Values, variables, expressions and types
  • Functions and recursion
  • The Unit type

This article will cover the object oriented nature of Scala language.

Classes

Scala has the same concept of a class as we have in other languages.

Classes in Scala are blueprints for creating objects. They can contain methods, values, variables, objects, traits and super-classes which are collectively called members. …


This blog was first published on Knoldus Blogs

Image for post
Image for post

This series is all about the taste of Scala. It is best suitable for all the newbies in Scala. So here we go…

This article will cover the fundamentals of Scala language.

Values

In Scala, we work with values:

Values are used to define constants. val modifier means constant or immutable that means we cannot change its value once it is created. Thus reassignment to val is prohibited.


This blog was first published on Knoldus Blogs

Image for post
Image for post

Building a Reactive System is all about the balance between consistency and availability and the consequences of picking one over the other. This article mainly focuses on consistency and availability and how they impact the scalability of a system.

What is Scalability, Consistency and Availability?

A system is considered scalable if it can meet the increase in demand while remaining responsive.
A system is considered consistent if all the nodes show the same data at the same time.
A system is considered available if it remains responsive despite any failures.

How does the scalability of a system differs from the performance of the system?


What happens when reactive meets microservices?

This blog was first published on Knoldus Blogs

In this article, we will cover the transition from Monoliths to Service Oriented Architecture to Reactive Microservices by applying isolation techniques to the application.

Image for post
Image for post

What are Monoliths?

To start explaining the microservices it’s useful to compare it to the monolithic application. An application is said to be a monolith when it is deployed as a single unit. Monoliths have a single shared database. They communicate with synchronous method calls where you send a message and expect a response immediately.

What are the cons of Monoliths?

  • Monoliths are limited by the maximum size of a single physical machine. …


This blog was first published on Knoldus Blogs

Image for post
Image for post

What is Pattern Matching?

Pattern matching is a powerful feature of the Scala language. It is a mechanism for checking a value against a pattern. A successful match deconstructs the value into its constituent parts.

Pattern matching allows for more concise and readable code while at the same time provide the ability to match elements against complex patterns.

In this blog, we will see the power of the Scala’s pattern matching in different use cases.

Syntax:

The match expression consist of multiple parts:

  1. The value we’ll use to match the patterns is called a candidate
  2. The keyword…

About

Mansi Babbar

Software Developer

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