barbies: Classes for working with types that can change clothes.

[ bsd3, data-structures, library ] [ Propose Tags ]

Types that are parametric on a functor are like Barbies that have an outfit for each role. This package provides the basic abstractions to work with them comfortably.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.2.0, 0.1.3.0, 0.1.3.1, 0.1.4.0, 1.0.0.0, 1.1.0.0, 1.1.1.0, 1.1.2.0, 1.1.2.1, 1.1.3.0, 2.0.0.0, 2.0.1.0, 2.0.2.0, 2.0.3.0, 2.0.3.1, 2.0.4.0, 2.0.5.0, 2.1.0.0, 2.1.1.0 (info)
Change log ChangeLog.md
Dependencies base (>=4.11 && <5), distributive, transformers [details]
License BSD-3-Clause
Copyright 2018 Daniel Gorin
Author Daniel Gorin
Maintainer jcpetruzza@gmail.com
Category Data Structures
Home page https://github.com/jcpetruzza/barbies#readme
Bug tracker https://github.com/jcpetruzza/barbies/issues
Source repo head: git clone https://github.com/jcpetruzza/barbies
Uploaded by DanielGorin at 2024-01-13T13:46:09Z
Distributions Arch:2.0.5.0, LTSHaskell:2.0.5.0, NixOS:2.0.5.0, Stackage:2.1.1.0
Reverse Dependencies 12 direct, 183 indirect [details]
Downloads 22576 total (420 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-01-13 [all 1 reports]

Readme for barbies-2.1.1.0

[back to package description]

barbies Build Status

Types that are parametric on unary type-constructors that control their shapes are like Barbies that can wear different clothes to become a different doll. This is a common Haskell-idiom. E.g.,


data Person f
  = Person
      { name :: f String
      , age  :: f Int
      }

b1 :: Person Last       -- Barbie with a monoid structure
b2 :: Person (Const a)  -- container Barbie
b3 :: Person Identity   -- Barbie's new clothes

This package provides basic classes and abstractions to work with these types and easily transform them. See the docs to learn more.

  • barbies-th: Use Template Haskell to derive barbie-types from declarations that look like normal types.
  • higgledy: Use Generics to give a barbie-type interface to a normal type.
  • harg: Program-configuration (from command-line arguments, environment variables, configuration files, etc) via barbie-types