{"@context":"https://w3id.org/codemeta/3.0","@type":"SoftwareSourceCode","identifier":"pkg:hackage/emgm","name":"emgm","description":"EMGM is a general-purpose library for datatype-generic programming.\n\nThe design is based on the idea of modeling algebraic datatypes as\nsum-of-product structures. Many datatypes can be modeled this way, and\nbecause they all share a common structure, we can write generic functions that\nwork on this structure.\n\nThe primary features of the library are:\n\nA foundation for building generic functions. EMGM includes a collection of\ndatatypes (e.g. sum, product, and unit) and type classes (e.g. Generic and\nRep). Everything you need for defining generic functions and supporting\ndatatypes can be found here.\n\nMany useful generic functions. These provide a wide range of\nfunctionality. For example, there is crush, a generalization of the\nfoldl/foldr functions, that allows you to flexibly extract the elements of a\npolymorphic container. Now, you can do many of the operations with your\ncontainer that were previously only available for lists.\n\nSupport for standard datatypes. EMGM supports standard types: primitives\n(e.g. Int and Float), Bool, lists, tuples, Maybe, etc.\n\nNOTE: As of version 0.4, this library does not have Template Haskell for\ngenerating the representation. We are working on another library for a\nsolution to this problem.","version":"0.3.1","softwareVersion":"0.3.1","license":"https://spdx.org/licenses/BSD-3-Clause","url":"http://www.cs.uu.nl/wiki/GenericProgramming/EMGM","keywords":["bsd3","generics","library","Propose Tags"],"maintainer":[{"@type":"Person","name":"SeanLeather"}],"author":[{"@type":"Person","name":"SeanLeather"}],"copyrightHolder":[{"@type":"Person","name":"SeanLeather"}],"dateCreated":"2008-09-19","dateModified":"2009-03-05","datePublished":"2009-03-05","copyrightYear":2008,"downloadUrl":"https://hackage.haskell.org/package/emgm-0.3.1/emgm-0.3.1.tar.gz","applicationCategory":"hackage","runtimePlatform":"hackage","sameAs":["https://hackage.haskell.org/package/emgm"]}