context-free-art: Generate art from context-free grammars

[ bsd3, graphics, library, program ] [ Propose Tags ]

Create art via context free grammar production rules. Includes an SVG backend.

Context free grammar primer

Context free grammars consist of a set of terminal symbols, a set of non-terminal symbols, and production rules that map non-terminals to other symbols.

With a context-free grammar, we can generate strings of terminals that conform to the specified language.

Our language will describe graphics.

Example

import Art.ContextFree
import Data.List.NonEmpty

-- let's define a Production rule
a = Circle 1

-- this will produce an IO Svg from the blaze-svg package
-- to turn it into a string we can use one of the `blaze-svg` renderers
graphic1 = interpret $ Circle 1

-- let's create a non-terminal, at every layer,
-- this will have an 85% chance of rendering another circle
circles = NonTerminal $ (85, [Move (2, 0)], Circle 1 :| [circles]) :| []

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.3.0.0, 0.3.0.1
Change log CHANGELOG.md
Dependencies base (>=4.12.0.0 && <4.13), bifunctors (>=5.5 && <5.6), blaze-markup, blaze-svg (>=0.3.6 && <0.4), extra (>=1.6 && <1.7), HUnit (>=1.6 && <1.7), random (>=1.1 && <1.2), text (>=1.2 && <1.3), text-show (>=3.8 && <3.9) [details]
License BSD-3-Clause
Author Owen Shepherd
Maintainer 414owen@gmail.com
Category Graphics
Home page https://github.com/414owen/context-free-art
Uploaded by 414owen at 2019-10-15T19:34:48Z
Distributions NixOS:0.3.0.1
Executables tests
Downloads 2149 total (9 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]