| CARVIEW |
Select Language
HTTP/1.1 200 OK
Connection: keep-alive
Server: nginx/1.24.0 (Ubuntu)
Content-Type: text/html; charset=utf-8
Cache-Control: public, max-age=300
Content-Encoding: gzip
Via: 1.1 varnish, 1.1 varnish
Accept-Ranges: bytes
Age: 0
Date: Sat, 17 Jan 2026 01:33:04 GMT
X-Served-By: cache-dfw-kdfw8210161-DFW, cache-bom-vanm7210085-BOM
X-Cache: MISS, MISS
X-Cache-Hits: 0, 0
X-Timer: S1768613585.634165,VS0,VE287
Vary: Accept, Accept-Encoding
transfer-encoding: chunked
penrose: Create beautiful diagrams just by typing mathematical notation in plain text.
Penrose
penrose: Create beautiful diagrams just by typing mathematical notation in plain text.
Modules
- Penrose
- Penrose.API
- Penrose.Element
- Penrose.Env
- Penrose.Functions
- Penrose.GenOptProblem
- Penrose.Optimizer
- Penrose.Plugins
- Penrose.Serializer
- Penrose.Server
- Penrose.ShadowMain
- Penrose.Shapes
- Penrose.Style
- Penrose.Substance
- Penrose.SubstanceJSON
- Penrose.SubstanceTokenizer
- Penrose.Sugarer
- Penrose.Tokenizer
- Penrose.Transforms
- Penrose.Util
Downloads
- penrose-0.1.1.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.1.0, 0.1.1.1 (info) |
|---|---|
| Change log | ChangeLog.md |
| Dependencies | ad, aeson, ansi-terminal, array, base (>=4.12 && <5), bytestring, containers, directory, docopt, extra, hmatrix, hslogger, http-types, megaparsec, mtl, multimap, network, old-time, parser-combinators, penrose, pretty, pretty-show, pretty-terminal, process, random, random-shuffle, scotty, split, text, unordered-containers, uuid, websockets [details] |
| License | MIT |
| Author | team-penrose |
| Maintainer | penrose.team@gmail.com |
| Uploaded | by wodeni at 2019-07-02T22:46:42Z |
| Home page | https://penrose.ink |
| Source repo | head: git clone https://github.com/penrose/penrose.git |
| Distributions | |
| Reverse Dependencies | 1 direct, 0 indirect [details] |
| Executables | penrose |
| Downloads | 2551 total (17 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs not available [build log] All reported builds failed as of 2019-07-02 [all 3 reports] |
Readme for penrose-0.1.1.1
[back to package description]Penrose 
Penrose is an early-stage system that is still in development. Our system is not ready for contributions or public use yet, but hopefully will be soon. Send us an email if you're interested in collaborating.
- See the site for more information and examples.
- See the wiki for more system-specific information on building, running, testing, and debugging the system.
- For even more documentation, see Nimo Ni's README.
Example
Here's a simple Penrose visualization in the domain of set theory.
It's specified by the following Substance and Style programs.
tree.subSet A Set B Set C Set D Set E Set F Set G Subset B A Subset C A Subset D B Subset E B Subset F C Subset G C NoIntersect E D NoIntersect F G NoIntersect B Cvenn.stySet x { shape = Circle { } constraint contains(x, x.label) } Intersect x y { constraint overlapping(x, y) constraint outsideOf(y.label, x) constraint outsideOf(x.label, y) } NoIntersect x y { constraint nonOverlapping(x, y) } Subset x y { constraint contains(y, x) constraint smallerThan(x, y) constraint outsideOf(y.label, x) } NoSubset x y { objective repel(x, y) constraint outsideOf(x, y) constraint outsideOf(y.label, x) constraint outsideOf(x.label, y) constraint nonOverlapping(x, y) }
Here's how the optimization looks live in the UI.