#golang

Uses: 3

Assert Golang Errors For Behavior: Everything You Need To Know Before Making Robust and Scalable Error Handling

Tags: #coding #golang #errors

Golang articles advise sentinel errors and error types, which is not flexible enough. As a key learning, this solution leaks error types and its code across the packages. Only “assert errors for behavior” helps us to build a flexible solution. The post explains the package developers perspective on modelling errors using private data types to implement the respective behavior so that the library avoids a strong coupling with the caller, making for a nobrittle interface.

Why higher-kinded polymorphism is vital functional abstraction and How to implement type classes with Golang

Tags: #coding #pure functional #golang #algebra #type system #type classes #polymorphism #higher-kinded

Higher-kinded types helps to implement polymorphic containers, shared libraries, compatibility and harness testing. Golang does not support higher-kinded types, where a type is abstracted over some other type. The defunctionalization technique transforms higher-kinded type expressions into nullary kind. The post explains how to build a lightweight higher-kinded polymorphism using standard Golang notation with help of defunctionalization.

A Guide To Pure Type Combinators in Golang or How to Stop Worrying and Love the Functional Programming

Tags: #coding #pure functional #golang #algebra #type system #type classes #generic #polymorphism #combinators #type trait

Combinators open up an opportunity to depict computation problems in terms of fundamental elements. It delivers powerful patterns for functional programming and make a bridge to the way humans think, allowing anyone to represent anything using structured symbolic expressions. Let’s advance these patterns towards the Golang type system and define combinators over types and their instances to derive complex structures of type T. There are 7 patterns to consider and express their semantic with Golang despite a fact that Golang type system is less powerful and does not support type classes. In the end, combinators are fundamentally computational constructs.