GithubHelp home page GithubHelp logo

jcranch / modernmapmerge Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 147 KB

an attempt at safe, generic map merging functionality in Haskell

License: BSD 3-Clause "New" or "Revised" License

Makefile 0.31% Haskell 99.69%

modernmapmerge's Introduction

Modern Map Merge

This is an attempt at providing more generic, safer merge functionality for maplike data structures. It has been proposed to the maintainers of the containers library as an issue.

There is a blogpost explaining the rationale for this project. This README is a more practical account of what this repository contains.

Packages: serious code

mini-witherable

This is a slight rewrite of Kinoshita's witherable package, written to have a few dependencies as possible (and hence to make it suitable as a dependency for containers, if desired).

Contents:

ModernMapMerge

This as the name suggests, is the core of the project: it consists of the merge functionality of Map and IntMap, rewritten with a shared, safer interface for merge tactics.

Contents:

Packages: proof-of-concept code

ListMap

This is a toy implementation of an alternative Map data structure, backed by lists of key-value pairs sorted by order of key.

It is unlikely that anyone will want to use it but it might be a helpful tutorial for people wishing to implement other maplike data structures.

Contents:

Maplike

This consists of a typeclass designed to reflect the functionality of a type like Map. It is intended as proof-of-concept rather than a production implementation: it is not very full-featured.

Also implemented is a generic prefix tree map datatype, where the nodes can in turn be any Maplike datatype.

Contents:

Extra

This consists largely of the advanced functionality in Kinoshita's witherable package. The plan to make collections depend on witherable requires a version of witherable with as few dependencies as possible; this package contains extra functionality.

It is possible that some or all of this functionality could be moved into the packages on which it depends.

Contents:

modernmapmerge's People

Contributors

jcranch avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.