{"id":16661215,"url":"https://github.com/snowleopard/alga-paper","last_synced_at":"2025-09-11T00:40:54.279Z","repository":{"id":72911449,"uuid":"81755955","full_name":"snowleopard/alga-paper","owner":"snowleopard","description":"A minimalistic, elegant and powerful approach to working with graphs in a functional programming language","archived":false,"fork":false,"pushed_at":"2021-09-20T19:36:34.000Z","size":318,"stargazers_count":196,"open_issues_count":0,"forks_count":4,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-16T06:26:13.897Z","etag":null,"topics":["algebra","graph","haskell"],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snowleopard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-12T20:46:48.000Z","updated_at":"2025-03-03T00:08:13.000Z","dependencies_parsed_at":"2023-05-26T01:15:17.974Z","dependency_job_id":null,"html_url":"https://github.com/snowleopard/alga-paper","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Falga-paper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Falga-paper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Falga-paper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowleopard%2Falga-paper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowleopard","download_url":"https://codeload.github.com/snowleopard/alga-paper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243950030,"owners_count":20373657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algebra","graph","haskell"],"created_at":"2024-10-12T10:34:12.943Z","updated_at":"2025-03-16T23:31:39.577Z","avatar_url":"https://github.com/snowleopard.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Algebraic Graphs with Class\n\nThe paper is freely available in the ACM Digital Library: https://dl.acm.org/authorize?N46678.\n\nAlternatively, you can download the preprint from https://github.com/snowleopard/alga-paper/releases.\n\nTalks:\n* Haskell eXchange 2017 (longer and more recent):\n[slides](https://github.com/snowleopard/alga-paper/releases/download/final/algebraic-graphs-haskellx.pdf),\n[video](https://skillsmatter.com/skillscasts/10635-algebraic-graphs).\n* Haskell Symposium 2017: [slides](https://github.com/snowleopard/alga-paper/releases/download/final/algebraic-graphs-slides.pdf),\n[video](https://www.youtube.com/watch?v=EdQGLewU-8k).\n\n\n## Abstract\n\nThe paper presents a minimalistic and elegant approach to working\nwith graphs in Haskell. It is built on a rigorous\nmathematical foundation --- an algebra of graphs --- that allows us to apply\nequational reasoning for proving the correctness of graph transformation\nalgorithms. Algebraic graphs let us avoid partial functions typically\ncaused by 'malformed graphs' that contain an edge referring to\na non-existent vertex. This helps to liberate APIs of existing graph libraries\nfrom partial functions.\n\nThe algebra of graphs can represent directed, undirected, reflexive\nand transitive graphs, as well as hypergraphs, by appropriately choosing\nthe set of underlying axioms. The flexibility of the approach is\ndemonstrated by developing a library for constructing\nand transforming polymorphic graphs.\n\n## Implementation\n\nSee https://github.com/snowleopard/alga for the source code and links to blog posts. \n\nThere are also draft implementations in Scala and Agda, see https://github.com/algebraic-graphs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowleopard%2Falga-paper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnowleopard%2Falga-paper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowleopard%2Falga-paper/lists"}