My Functional Programming journey was filled with dead ends, false starts, failed attempts and frustration. And I suspect that I’m not alone in this struggle. So why is this a common problem…
Learn more about how the Rust programming language shares many of the advantages offered by Haskell such as a strong type system, great tooling, polymorphism, immutability, concurrency, and great software testing methodologies. Rust is a good choice when you need to squeeze in extra performance.
This essay attempts to make Conal’s vision more understandable to less mathematically-oriented programmers, and also show how this perspective could be the foundation for a new era of programming, not just with user interfaces, but also multi-node computing, storage, machine learning, etc.
I’ve written this article series, to help you get a good sense of how production Haskell is written at a company like Klarna and what to avoid along the road.
Modern day javascript environments have many ways of dealing with state. One can use closures or classes to have some shared state, but sometimes a more elaborate state management library is needed…
This guide will use JavaScript instead of a pure functional programming language (e.g. Haskell) to make things more approachable for developers accustomed to imperative languages. It will, however, assume you have basic knowledge of functional programming, including currying and lambdas.
OOP is considered by many to be the crown jewel of computer science. The final solution to code organization. The end to all of our problems. The only true way to write our programs. Bestowed upon…
Reactive streams are a unified way of dealing with asynchronous events in JavaScript. Learn more in this tutorial with RxJs examples that you can run & modify.
Redux-Observable is a middleware for Redux which handles cancellation and many other asynchronous side effects by using reactive programming. … RxJS and Most.js are two libraries for reactive programming with which you can handle streams of actions in different ways. … In the following examples, Most.js will be used.
In Practical guide to writing more functional Javascript, we walked through how to reason about our code in functional programming terms. In this guide, we will talk about a few utilities I like to use to reason about these concepts and help us navigate through the imperative constructs JavaScript natively provides.
Who knows — probably? That’s not the point of this article – I am not going to talk about what Elm could be, I am going to tell you what it is today. Elm is a functional language that compiles to…
Functional programming is a great discipline to learn and apply when writing JavaScript. Writing stateless, idempotent, side-effect free code really does solve a lot of problems: But there’s a…
Reactive paradigm is a declarative way to manage changes in application status (versus traditional imperative programming), based on the concept of event streams.
As functional programmers, we like to piece our programs together out of small pieces. Our main tool for this is composition. We take an input, process it through a function, then pass it on to another function. And this all works great so long as all our functions take exactly one argument. Which never happens. So what do we do? In general, we turn to a set of tools called combinators. This article focusses on a particular combinator called the blackbird.
This is part of a three part examining the underling mathematics and mechanics of Asynchronous programming with javascript When i wanted to make sense of the continuations , i started from the basics…
A pragmatic new design for high-level abstractions Monads (and, more generally, constructs known as “higher kinded types”) are a tool for high-level abstraction in programming languages1. Historically, there has been a lot of debate inside (and outside) the Rust community about whether monads would be a useful abstraction to have in the language. I’m not concerned with that here. You see, there’s a problem with talking about whether monads would be useful or not, and it’s this: there are a large number of design challenges to overcome to have any hope of implementing them at all — to the best of my knowledge, there currently exists no realistic (that is, practical) design for monads in Rust. In fact, there are so many obstacles that some people express doubt that it’s even possible. Strictly speaking, they’re a lot more than that, but we’re only interested in the programming angle here. ↩