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

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

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]) :| []

Properties

Versions0.1.0.0, 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 logCHANGELOG.md
Dependenciesbase (>=4.12.0.0 && <4.13), bifunctors (==5.5.*), blaze-markup, blaze-svg (>=0.3.6 && <0.4), extra (==1.6.*), HUnit (==1.6.*), random (==1.1.*), text (==1.2.*), text-show (==3.8.*) [details]
LicenseBSD-3-Clause
AuthorOwen Shepherd
Maintainer414owen@gmail.com
CategoryGraphics
Home pagehttps://github.com/414owen/context-free-art
Executablestests
UploadedWed Oct 16 23:55:12 UTC 2019 by 414owen

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees