United Monoids: Finding Simplicial Sets and Labelled Algebraic Graphs in Trees
@article{Mokhov2022UnitedMF, title={United Monoids: Finding Simplicial Sets and Labelled Algebraic Graphs in Trees}, author={Andrey Mokhov}, journal={Art Sci. Eng. Program.}, year={2022}, volume={6}, pages={12} }
Graphs and various graph-like combinatorial structures, such as preorders and hypergraphs, are ubiquitous in programming. This paper focuses on representing graphs in a purely functional programming language like Haskell. There are several existing approaches; one of the most recently developed ones is the “algebraic graphs” approach (2017). It uses an algebraic data type to represent graphs and has attracted users, including from industry, due to its emphasis on equational reasoning and making…
38 References
Algebraic graphs with class (functional pearl)
- Mathematics, Computer ScienceHaskell
- 2017
The paper presents a minimalistic and elegant approach to working with graphs in Haskell. It is built on a rigorous mathematical foundation --- an algebra of graphs --- that allows us to apply…
Fun with semirings: a functional pearl on the abuse of linear algebra
- Computer Science, MathematicsICFP
- 2013
A typeclass in Haskell is defined for describing closed semirings, and a few functions for manipulating matrices and polynomials over them are implemented, which can be used to calculate transitive closures, find shortest or longest or widest paths in a graph, analyse the data flow of imperative programs, optimally pack knapsacks, and perform discrete event simulations.
Semiring Frameworks and Algorithms for Shortest-Distance Problems
- Computer Science, MathematicsJ. Autom. Lang. Comb.
- 2002
A generic algorithm for finding single-source shortest distances in a weighted directed graph when the weights satisfy the conditions of the general semiring framework is given.
A Survey of Graphical Languages for Monoidal Categories
- Mathematics
- 2010
This article is intended as a reference guide to various notions of monoidal categories and their associated string diagrams. It is hoped that this will be useful not just to mathematicians, but also…
Algebras for weighted search
- Computer ScienceProc. ACM Program. Lang.
- 2021
The algebraic underpinning of weighted search is explored, and a monad transformer based on the free semimodule monad is introduced, which is used to implement Dijkstra's algorithm and efficient probabilistic sampling.
Inductive graphs and functional graph algorithms
- Computer ScienceJ. Funct. Program.
- 2001
A new style of writing graph algorithms in functional languages which is based on an alternative view of graphs as inductively defined data types is proposed, and it is demonstrated how graph algorithms can be succinctly given by recursive function definitions based on the inductive graph view.
Type your matrices for great good: a Haskell library of typed matrices and applications (functional pearl)
- Computer ScienceHaskell@ICFP
- 2020
A simple inductive data type for representing correct-by-construction matrices that can be used to implement matrix-manipulation algorithms efficiently and safely, performing in some cases faster than existing alternatives even though the algorithms are written in a direct and purely functional style.
Notions of computation as monoids*
- MathematicsJournal of Functional Programming
- 2017
This article gives conditions under which one can obtain free monoids and Cayley representations at the level of monoidal categories, and shows that their concretisation results in useful constructions for monads, applicative functors, and arrows.
Conditional Partial Order Graphs
- Computer Science
- 2009
This work presents a new formal model, called Conditional Partial Order Graph, which captures concurrency and choice in a system’s behaviour in a compact and efficient way and brings new methods for modelling concurrency into the domain of modern and future processor architectures.
Structuring depth-first search algorithms in Haskell
- Computer SciencePOPL '95
- 1995
This paper expresses depth-first search in a lazy functional language, obtaining a linear-time implementation and exemplifies through a calculational-style proof of a far from obvious strongly-connected components algorithm.