Been quiet around here! I’ve been putting almost all of my writing time into Logic for Programmers and my whole brain is book-shaped. Trust me, you do not want to read my 2000-word rant on Sphinx post-build LaTeX customization. But I spent the past week in a historical rabbit hole and had to share what I found. It started with Algebraic [Data] Types are not Scary, Actually. The post covers AlgDTs1 in more detail, but a quick overview is:| Hillel Wayne
Map, reduce, and filter are all array methods in JavaScript. Each one will iterate over an array and perform a transformation or computation. Each will return a new array based on the result of the function. In this article, you will learn why and ho...| freeCodeCamp.org
The purpose of eta reduction (also written \(\eta\)-reduction) is to drop an abstraction over a function to simplify it. This is possible when there is nothing more that a function can do to its argument. For example, imagine that we have a simple function \( f\ x = g\ x \). Both \(g\) and \(f\) take the same argument, \(x\), and the function application function results in the same value (specified by the equality symbol). Since both \(f\) and \(g\) take the same argument and produce the sam...| Kevin Sookocheff
It is with no small thanks to MDN, StackOverflow, Firefox's support for countless open tabs, JavaScript's support for first-class functions, and first-class supportive colleagues, I learned it is possible for a web front end novice to program "text art animations". Whatever that is even. Because I thoroughly enjoyed doing just that for Hanukkah of Data 2022. Here's how it went down.| Hi, I'm Aditya Athalye. I make, learn, teach here.
Here I illustrate how Clojurists (including Yours Truly) like to solve problems and model things using hammocks, pure functions, and the "it's just data" ideology. Also, while the *problem* focuses on "design in the small" of application logic, many ideas in the *solution* can—and do—scale all the way to "design in the large" of whole systems.| Hi, I'm Aditya Athalye. I make, learn, teach here.
Or, the one in which we "take apart" Douglas McIlroy's pipeline from 1986. Doing so teaches an object lesson about the essence of modular, composable, functional architecture.| Hi, I'm Aditya Athalye. I make, learn, teach here.
Dismal arithmetic is just like the arithmetic you learned in school, only simpler: there are no carries, when you add digits you just take the largest, and when you multiply digits you take the smallest. How does code look in the two languages I like a lot; Clojure and APL?| Hi, I'm Aditya Athalye. I make, learn, teach here.
Or, *Supremely Functional Bash Programming*, an exploration in N parts...| Hi, I'm Aditya Athalye. I make, learn, teach here.
Every so often, I want to avoid opening a website in a browser, for ... reasons.| Hi, I'm Aditya Athalye. I make, learn, teach here.
Previously: (Weak) Factorization Systems. It’s been known since Lambek that typed lambda calculus can be modeled in a cartesian closed category, CCC. Cartesian means that you can form product…| Bartosz Milewski's Programming Cafe
How I built an interactive Elm workshop environment using Guida's in-browser compiler after server-side compilation hit memory limits| cekrem.github.io
Writing code in a functional way can help to solve complex problems in a efficient and in a reusable manner, for creating clean and maintainable software.| iO tech_hub
How Self-Contained Features and Event Logs Replace Legacy Models| Rico Fritzsche
Transpose If we are to represent a row of a matrix as a list of numbers, then a matrix can naturally be re...| blog.shaynefletcher.org
Filtering arrays with other value types| Matthias Noback
Introducing functional programming in Fortran with filtering integers| Matthias Noback
Higher-order functions and closures| Matthias Noback
Transforming arrays| Matthias Noback
"All you need is list, set and dict"| Agile & Coding
"What do you call a Frenchman wearing sandals?"| Agile & Coding
File & folder structures - there's almost as many different variations as there are code repositories.| Agile & Coding
Notice The work in this article is in progress. But you are free to read it in its current state and free to post comments. If you want to see the change set, go to the bottom of the page. Maybe you are of those people who gets headache when writing a parser. LL or […]| Kerflyn's Blog
In a previous post, I’ve shown how to use the type Optional provided by Guava, in a view to create a monad. Personally, I’m not satisfied with the resulting code. Since, I’ve found another way to represent the Option monad in Java only, and the new representation seems to be better. So we start with […]| Kerflyn's Blog
Guava is a kind of Swiss Army knife API proposed by Google for Java 5 and more. It contains many functionalities that help the developer in its every day life. Guava proposes also a basic functional programming API. You can represent almost statically typed functions with it, map functions on collections, compose them, etc. Since […]| Kerflyn's Blog
What I like with factorial function is that it’s easy to implement by using different approaches. This month, I’ve presented functional programming and some of its main concepts (recurs…| Kerflyn's Blog
Shardcake is a Scala open source library I created in 2022 to easily distribute entities across multiple servers (sharding) and to interact with them using their ID without knowing their actual location (location transparency). To support a real-life...| Pierre Ricadat's Tech Blog
While Dart is in its core an object-oriented programming language, that doesn’t mean that you’re stuck only with that paradigm. In fact, Dart is something called a multi-paradigm language! Functional programming (FP) makes your code easier to test and reuse, and also makes it less error prone. With Dart, it’s easy to start introducing practical functional […] The post Practical Functional Programming in Dart & Flutter appeared first on Reso Coder.| Reso Coder
Why I stopped chasing reuse and started writing domain logic around decisions, not abstractions.| Rico Fritzsche
Streamline Testing by Eliminating Mocks and Focusing on Pure Functions| Rico Fritzsche
Moving Beyond Mutable Objects to Explicit Business Logic| Rico Fritzsche
Why I Moved Beyond Aggregates to Functional Domain Modeling| Rico Fritzsche
Pure functions and immutable data aren't just academic concepts. They're practical tools for building robust, maintainable software.| Rico Fritzsche
Why Removing Aggregates Unlocks Simplicity, Flexibility, and Independent Feature Slices| Rico Fritzsche
I recently thought of a nice way to structure a language for parallel programming around the concept of sequential composition. Think of parallelism as the default—evaluate everything in parallel unless the semantics of the situation precludes it: sums are posterior to summands, but the summands can be evaluated simultaneously. You need a way to express […]| Existential Type
... or how to make a non-deterministic functions deterministic through the power of isolated WASM sandbox. This time we'll go through the problems of unpredictability in code, which execution could be affected by external factors like I/O operations, time etc. Then we'll see what kind of| Bartosz Sypytkowski
How to introduce Elm incrementally into your existing web applications with a real-world example| cekrem.github.io
I have a new note on toying with the lambda calculus in Python to share here. Please check it out!| Win Vector LLC
Update: fellow algorithms researcher Francisco Claude just posted a great article about using lazy evaluation to solve Tic Tac Toe games in Common Lisp. Niki (my brother) also wrote a post using generators with asynchronous prefetching to hide IO latency. Worth a read I| alexbowe.com
I’ve recently taken Erlang back up1, and I wanted to use this blog post to talk about something cool I learned over the weekend. I am implementing a data structure. Reimplementing actually, as it is the structure from my thesis – a succinct text index (I will| alexbowe.com
Understanding the concepts of closures, currying, and arrow functions isn’t just about “knowing more JavaScript,” but about learning to think better in JavaScript.| Apiumhub
A small utility package to make working with HTML in Elm more convenient| cekrem.github.io
I blogged about Java Stream debugging in the past but I skipped an important method that's worthy of a post of its own: peek. This blog post delves into the practicalities of using peek() to debug Java streams, complete with code samples and common p...| Java, Debugging, DevOps & Open Source
As early adopters of Elixir, we've been using the functional programming language for more than a decade. Here, our software experts share tips and tricks.| Revelry
This post explores unusual primitive constructs in programming languages, from data-like primitives to somewhat esoteric features. Unusual primitives are interesting because they indicate an attempt by the language designer to help the programmer think in a new way. Acknowledgement: This writeup is a response and followup to Hillel Wayne’s …| dr knz @ work
Photo by Steven Wright on Unsplash In late 2023, Alex Kladov published Push ifs up and fors down which essentially says the following (correct) statement: If there’s an if condition inside a functi…| Andy G's Blog
*I’m pretty sure the only way to really tell if an email address is valid is to send an email to it and hopefully not get it bounced back as undeliverable. Regular expressions be damned. *In Haskell, this is only true if you ask it to| Andy G's Blog
This is something I’ve been asking myself while learning Rust. Yes, I know that this sounds like a weird question to ask as it’s no secret that Rust has huge influence from the functional programming world. Closures, iterators, pattern matching, algebraic data types; these are features inspired by FP languages, so obviously you can do … Continue reading Is Rust a Functional Language in Disguise?→| Manuel Cerón
I just released v2.21 of True Myth, with two new pairs of helpers to deal with safe JavaScript object property lookup with Maybes and handling exception-throwing code with Results. Safe JavaScript object property lookup We often deal with optional properties on JavaScript objects, and by default JavaScript just gives us undefined if a property doesn’t exist on an object and we look it up: type Person = { name?: string; }; let me: Person = { name: 'Chris' }; console.log(me.name); // Chris le...| Chris Krycho
A bunch of neat new utility functions on Maybe for arrays and tuples.| v4.chriskrycho.com
I’ve been working on getting the Ember app I work on fully type-checked in strict mode this week, and noticed something interesting along the way: there are a lot of design decisions—a few of them really core to the behavior of the app!—which we never, ever would have made if we had been using Typescript in the first place. One of these is pervasive references to certain optional properties that appear in services throughout our app—the basket, for example. These can indeed be inset a...| Chris Krycho
Adam Giese’s “Level up your .filter game” does something really interesting and helpful: it introduces a bunch of fairly sophisticated functional programming concepts without ever mentioning functional programming and without ever using any of the jargon associated with those terms. “Level up your .filter game” gives you a reason to use some standard FP tools—currying, higher-order functions, composition—in your ordinary work. It’s pitched at working JS developers. It gives a ...| Chris Krycho
In 2017 I decided to print some PDFs to read instead of just have them in an ever-growing folder of Papers to Read. Here is the list of the ones I managed to read this year. Out of the Tar Pit / Ben Moseley, Peter Marks / 2006 This is my favorite paper. It is a bit long (around 60 pages), but well worth reading. It is very thorough in defining what software complexity is. The authors make the distinction between essential and accidental complexity (following Fred Brook’s ideas on the topic)...| Runtime Checks
Every time I want to quickly understand something about an advanced type system or programming language concept I get lost when I see something like this on Wikipedia: Linear type systems are the internal language of closed symmetric monoidal categories, much in the same way that simply typed lambda calculus is the language of Cartesian closed categories. More precisely, one may construct functors between the category of linear type systems and the category of closed symmetric monoidal catego...| Runtime Checks
Warning: this is probably only of interest to functional programmers.| Teaching, Playing, and Programming
I've always enjoyed the mathematical tradition of “proofs without words”, so I wanted to see if something similar could be done with an algorithm. Of course, an algorithm is typically more complicated than a mathematical identity, so it's not surprising that an algorithm typically can't be captured in a single picture. Instead, I've found the idea of a commutative diagram to be a useful pictorial shorthand, where the short way around the diagram gives a high-level view of the operation...| Teaching, Playing, and Programming
Ada is not the first language that comes to mind when you want to do functional programming. (You in the back, stop laughing!) Why, with excellent functional programming languages like Haskell or ML easily available, would I choose to do a functional programming project in Ada? (I CAN STILL HEAR YOU LAUGHING!) Partly because we use Ada in some courses at our institution, and I wanted a library that could help in teaching recursion to novices. But, honestly, mostly I just wanted to see if i...| Teaching, Playing, and Programming
How to supercharge your development setup with true code hot-reloading in a truly functional programming language.| 200ok.ch
1 Main ideas 2 Lack of tuples 3 Folding over arrays 4 Deallocating stuff 5 Discriminated unions 6 Main data structure 7 Tokenizer 8 Parser 9 Flattener 10 Define the phases 11 Parsing the command li…| x += x++
0.1 Cleanup 0.2 Lambdas 0.3 Unions 0.1 Cleanup Let’s start simple with the cleanup function. First we need the usual barrage of includes. G_BEGIN_DECLS allows the header to be linked in C++. #ifn…| x += x++
0.1 Discriminated unions in C 0.2 Nested functions and lambda variables 0.3 Automatic cleanup of local variables 0.4 Data structures 0.5 Wrapping up This post/program (as I’m writing it in literate…| x += x++
Technical blog of Microsoft certified developer James Hickey. Helping you reach the next step of your career as a software developer!| blog.jamesmichaelhickey.com
Lambda calculus provides some of the foundational structures that functional programming is built from. It therefore seems fitting to start my journey through functional programming with a thorough examination of lambda calculus. This first post will introduce Lambda calculus with references to the book An Introduction to Functional Programming Through Lambda Calculus. Syntax The complete syntax for Lambda calculus is surprisingly small and comprehensible. This section lists the syntax in its...| Kevin Sookocheff
I’m documenting my journey from functional neophyte to (hopefully) functional programmer by writing a series of blog posts on the topic. So far I’ve covered what functional programming is and why you would want to learn about it. In this post, I’m going to describe the resources I will be using to become functionally fluent. Although I have previously said I’m learning about functional programming, I should be more specific. I do already have some middling experience with Clojure and ...| Kevin Sookocheff
I’m documenting my journey from functional neophyte to (hopefully) functional programmer by writing a series of blog posts on the topic. This is the first post describing what, exactly, the word functional programming means. Functional programming is a programming paradigm that lives alongside other programming paradigms. None of these paradigms have a precise, unanimous definition or standard, and there is not real agreement on which paradigm is better or worse for building particular type...| Kevin Sookocheff
Clojure either directly supports, or easily supports the use of common design patterns like singleton, command, observer, visitor| Janet A. Carr
I think there's another reason this problem persists in Clojure. There's no Rails for Clojure.| Janet A. Carr
Dear Janet, I hope this email finds you well. I know I'm just a fictional character in a fictional email to set up the hook for this blog post, but I was wondering if you could help me speed up our slow library. We use the best algorithms money can| Janet A. Carr