I wasn’t expecting it, but there have been some breakthroughs in available functional data structures for F#. I’m talking about speed and versatility, and as always, composability. Now available in FSharpx.Collections.Experimental (and on NuGet) is by far the fastest linear functional data structure (for what it does),
FlatList. It’s been available as an internal type for some time as part of the OS F# compiler code. Now for the first time it’s available as a stand-alone type in a component library with intellisense documentation.
It’s implemented as a
struct and uses an
array as internal storage, so it is just blazing fast (as fast as an array) at what it does best:
…and almost all of the
array module members (plus some).
What it’s not so fast at (like
append. So it’s best loaded from an
IEnumerable object rather than built up one element at a time.
Try it out, and post any feedback to the FSharpx GitHub issues. After sufficient beta testing we will graduate it to the
More to come
I don’t want to steal his thunder, but there is someone quietly working on some more functional data structures that I hope to see soon in FSharspx.
First there’s a performance improvement to the already fast FSharpx.Collections.Vector (actually a new implementation). The speed increases I’m talking about are in the range of 2:1 to 5:1. And a wider range of module function bindings. Very cool.
Next there’s a unique and very versatile functional structure that does about anything you would ever want from a linear structure. I already have some plans for this one.
I’ve already had my hands on these two. They are real. He’s also working on at least one non-linear functional structure I have not evaluated yet, but based on past performance I have high expectations.