Skip to content

Commit b7b5bf4

Browse files
committed
extended docs
1 parent 86629b4 commit b7b5bf4

87 files changed

Lines changed: 4308 additions & 4012 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Feature Trace Recording
22

3+
[![Language](https://img.shields.io/badge/Language-Haskell-purple)](https://www.haskell.org/)
4+
[![Documentation](https://img.shields.io/badge/Documentation-Read-purple)](docs/html/index.html)
5+
[![License](https://img.shields.io/badge/License-GNU%20LGPLv3-blue)](https://choosealicense.com/licenses/lgpl-3.0/)
6+
37
Artifact repository for the paper _Feature Trace Recording_, accepted at _ESEC/FSE 2021_.
48
Authors are [Paul Maximilian Bittner][paul], [Alexander Schultheiß][alexander], [Thomas Thüm][thomas], [Timo Kehrer][timo], [Jeffrey M. Young][jeffrey], and [Lukas Linsbauer][lukas].
59

@@ -30,11 +34,13 @@ where an abstract syntax tree (AST) whose root has ID 11 is inserted below node
3034
(The first edit will always be `identity` under context `null`. This is a technical detail necessary to show the initial state of the example.)
3135
Afterwards, the code that is a result of this edit is shown (similar to Figure 1 in the paper):
3236

33-
void pop() {
34-
if (!empty()) {
35-
}
36-
storage[head--] = null;
37+
```java
38+
void pop() {
39+
if (!empty()) {
3740
}
41+
storage[head--] = null;
42+
}
43+
```
3844

3945
By default, the following examples are executed in this order:
4046

@@ -50,8 +56,11 @@ By default, the following examples are executed in this order:
5056
- [docs/Bob.png](docs/Bob.png): Shows how synchronising Alice's changes to Bob's variant would look like. As the synchronisation of code and feature traces across clones is subject to future work, this example simulates how we envision the synchronisation.
5157
- [docs/Patterns.png](docs/Patterns.png): Shows how our tool can reproduce the edit patterns described in the paper.
5258

53-
## Interesting Code Locations
59+
## Documentation
60+
61+
A detailed documentation can be found in [docs/html/index.html](docs/html/index.html).
5462

63+
Some interesting code locations are:
5564
- `showExamples` function in [`app/Main.hs`](app/Main.hs): Here you can choose which examples to run and in which format the source code should be displayed. Choose from:
5665
- `userFormat` (default): The perspective of the developer who is editing source code while traces are recorded in the background. This is the format used in the figures in the paper. The tool will show the presence conditions of the snapshots.
5766
- `userFormatDetailed`: A variation of `userFormat` where traces and presence conditions can be investigated seperately at the same time. Code is coloured in the colour of its feature trace while presence conditions are indicated by coloured lines on the left.

app/Main.hs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
{- |
2+
Description: Module of the @main@ function to run demos and print meta-information.
3+
License: GNU LGPLv3
4+
Maintainer: paul.bittner@uni-ulm.de
5+
6+
Module of the @main@ function to run demos and print meta-information.
7+
-}
18
module Main where
29

310
import Control.Monad.State ( State )

app/examples/EditPatterns.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{- |
2+
Description: Examples for edit patterns used in our evaluation.
3+
License: GNU LGPLv3
4+
Maintainer: paul.bittner@uni-ulm.de
5+
26
This module provides 'Example's to reproduce each edit pattern we inspected in the evaluation
37
of feature trace recording (Section 5 in our paper).
48
As each pattern describes a possible /type/ of edit and not an edit itself, each example shows

app/examples/Example.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{- |
2+
Description: Module for creating demos of feature trace recording.
3+
License: GNU LGPLv3
4+
Maintainer: paul.bittner@uni-ulm.de
5+
26
Module for creating demos of feature trace recording.
37
-}
48
module Example where

app/examples/StackPopAlice.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{- |
2+
Description: Motivating Example: Alice works on Stack.pop
3+
License: GNU LGPLv3
4+
Maintainer: paul.bittner@uni-ulm.de
5+
26
Module for reproducing our motivating 'example' where Alice edits the @pop@ method of a class @Stack@ in Java.
37
The example is described in detail in Section 2.1 of the paper and shown in Figure 1.
48
-}

app/examples/StackPopBob.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{- |
2+
Description: Motivating Example: Simulating propagation of Alice's edits on Stack.pop to Bob's clone
3+
License: GNU LGPLv3
4+
Maintainer: paul.bittner@uni-ulm.de
5+
26
Module for reproducing Bob's part of our motivating 'example'.
37
Bob propagates applicable edits by Alice to his variant.
48
The example is described in detail in Section 2.2 of the paper and shown in Figure 3.
@@ -45,7 +49,7 @@ example =
4549
popVersion3 = foldEditScript (fst <$> alicesEditsToSyncDirectly) startTree
4650
in
4751
return Example {
48-
Example.name = "Motivating Example: Simulating synchronisation of Alice's edits on Stack.pop to Bob's clone",
52+
Example.name = "Motivating Example: Simulating propagation of Alice's edits on Stack.pop to Bob's clone",
4953
Example.colours = StackPopBob.featureColourPalette $ colours alice,
5054
Example.startVersion = startVersion,
5155
Example.history =

docs/html/AST.html

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

docs/html/ASTPrettyPrinter.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>ASTPrettyPrinter</title><link href="linuwial.css" rel="stylesheet" type="text/css" title="Linuwial" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { processClass: "mathjax", ignoreClass: ".*" } });</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><span class="caption empty">&nbsp;</span><ul class="links" id="page-menu"><li><a href="src/ASTPrettyPrinter.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe</td></tr></table><p class="caption">ASTPrettyPrinter</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Module for pretty printing of ASTs.</p></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><span class="keyword">class</span> Show g =&gt; <a href="#t:ASTPrettyPrinter">ASTPrettyPrinter</a> g <span class="keyword">where</span><ul class="subs"><li><a href="#v:prettyPrint">prettyPrint</a> :: Monoid b =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b</li></ul></li><li class="src short"><a href="#v:showCode">showCode</a> :: (Show a, <a href="Grammar.html#t:Grammar" title="Grammar">Grammar</a> g, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; String</li><li class="src short"><a href="#v:showCodeAs">showCodeAs</a> :: (Monoid b, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> Show g =&gt; <a id="t:ASTPrettyPrinter" class="def">ASTPrettyPrinter</a> g <span class="keyword">where</span> <a href="src/ASTPrettyPrinter.html#ASTPrettyPrinter" class="link">Source</a> <a href="#t:ASTPrettyPrinter" class="selflink">#</a></p><div class="doc"><p>An ASTPrettyPrinter can pretty print ASTs of a certain grammar.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:prettyPrint" class="def">prettyPrint</a> :: Monoid b =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b <a href="src/ASTPrettyPrinter.html#prettyPrint" class="link">Source</a> <a href="#v:prettyPrint" class="selflink">#</a></p><div class="doc"><p>Pretty prints the given AST (last argument) to another type b (e.g., <code>String</code>).
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>ASTPrettyPrinter</title><link href="linuwial.css" rel="stylesheet" type="text/css" title="Linuwial" /><link rel="stylesheet" type="text/css" href="quick-jump.css" /><link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400i,700" /><script src="haddock-bundle.min.js" async="async" type="text/javascript"></script><script type="text/x-mathjax-config">MathJax.Hub.Config({ tex2jax: { processClass: "mathjax", ignoreClass: ".*" } });</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"></script></head><body><div id="package-header"><span class="caption empty">&nbsp;</span><ul class="links" id="page-menu"><li><a href="src/ASTPrettyPrinter.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul></div><div id="content"><div id="module-header"><table class="info"><tr><th>License</th><td>GNU LGPLv3</td></tr><tr><th>Maintainer</th><td>paul.bittner@uni-ulm.de</td></tr><tr><th>Safe Haskell</th><td>Safe</td></tr></table><p class="caption">ASTPrettyPrinter</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Type class for pretty printing <code><a href="AST.html#t:AST" title="AST">AST</a></code>s.</p></div></div><div id="synopsis"><details id="syn"><summary>Synopsis</summary><ul class="details-toggle" data-details-id="syn"><li class="src short"><span class="keyword">class</span> Show g =&gt; <a href="#t:ASTPrettyPrinter">ASTPrettyPrinter</a> g <span class="keyword">where</span><ul class="subs"><li><a href="#v:prettyPrint">prettyPrint</a> :: Monoid b =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b</li></ul></li><li class="src short"><a href="#v:showCode">showCode</a> :: (Show a, <a href="Grammar.html#t:Grammar" title="Grammar">Grammar</a> g, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; String</li><li class="src short"><a href="#v:showCodeAs">showCodeAs</a> :: (Monoid b, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b</li></ul></details></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">class</span> Show g =&gt; <a id="t:ASTPrettyPrinter" class="def">ASTPrettyPrinter</a> g <span class="keyword">where</span> <a href="src/ASTPrettyPrinter.html#ASTPrettyPrinter" class="link">Source</a> <a href="#t:ASTPrettyPrinter" class="selflink">#</a></p><div class="doc"><p>An ASTPrettyPrinter can pretty print ASTs of a certain grammar.</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a id="v:prettyPrint" class="def">prettyPrint</a> :: Monoid b =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b <a href="src/ASTPrettyPrinter.html#prettyPrint" class="link">Source</a> <a href="#v:prettyPrint" class="selflink">#</a></p><div class="doc"><p>Pretty prints the given AST (last argument) to another type b (e.g., <code>String</code>).
22
Parameters are:
33
* the start indent (e.g., <code>&quot;&quot;</code>),
44
* an indent generator that can generate an indent of a certain width within the context of printing a certain node (e.g., <code>(_ i -&gt; genIndent i)</code>),
55
* a function to lift strings to the output type b within the context of printing a certain node,
66
* a function print nodes, and
7-
* the AST to print.</p></div></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ASTPrettyPrinter">Instances</h4><details id="i:ASTPrettyPrinter" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:ASTPrettyPrinter:ASTPrettyPrinter:1"></span> <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a></span> <a href="src/SimpleJava.html#line-159" class="link">Source</a> <a href="#t:ASTPrettyPrinter" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:ASTPrettyPrinter:ASTPrettyPrinter:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="SimpleJava.html">SimpleJava</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:prettyPrint">prettyPrint</a> :: Monoid b =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; b <a href="src/ASTPrettyPrinter.html#prettyPrint" class="link">Source</a> <a href="#v:prettyPrint" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:showCode" class="def">showCode</a> :: (Show a, <a href="Grammar.html#t:Grammar" title="Grammar">Grammar</a> g, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; String <a href="src/ASTPrettyPrinter.html#showCode" class="link">Source</a> <a href="#v:showCode" class="selflink">#</a></p><div class="doc"><p>Default implementation for pretty printing an AST to a <code>String</code>.</p></div></div><div class="top"><p class="src"><a id="v:showCodeAs" class="def">showCodeAs</a> :: (Monoid b, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b <a href="src/ASTPrettyPrinter.html#showCodeAs" class="link">Source</a> <a href="#v:showCodeAs" class="selflink">#</a></p><div class="doc"><p>Alias for <code><a href="ASTPrettyPrinter.html#v:prettyPrint" title="ASTPrettyPrinter">prettyPrint</a></code>.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.23.0</p></div></body></html>
7+
* the AST to print.</p></div></div><div class="subs instances"><h4 class="instances details-toggle-control details-toggle" data-details-id="i:ASTPrettyPrinter">Instances</h4><details id="i:ASTPrettyPrinter" open="open"><summary class="hide-when-js-enabled">Instances details</summary><table><tr><td class="src clearfix"><span class="inst-left"><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:ASTPrettyPrinter:ASTPrettyPrinter:1"></span> <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a></span> <a href="src/SimpleJava.html#line-165" class="link">Source</a> <a href="#t:ASTPrettyPrinter" class="selflink">#</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><details id="i:ic:ASTPrettyPrinter:ASTPrettyPrinter:1"><summary class="hide-when-js-enabled">Instance details</summary><p>Defined in <a href="SimpleJava.html">SimpleJava</a></p> <div class="subs methods"><p class="caption">Methods</p><p class="src"><a href="#v:prettyPrint">prettyPrint</a> :: Monoid b =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> <a href="SimpleJava.html#t:SimpleJavaGrammar" title="SimpleJava">SimpleJavaGrammar</a> a -&gt; b <a href="src/ASTPrettyPrinter.html#prettyPrint" class="link">Source</a> <a href="#v:prettyPrint" class="selflink">#</a></p></div></details></td></tr></table></details></div></div><div class="top"><p class="src"><a id="v:showCode" class="def">showCode</a> :: (Show a, <a href="Grammar.html#t:Grammar" title="Grammar">Grammar</a> g, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; String <a href="src/ASTPrettyPrinter.html#showCode" class="link">Source</a> <a href="#v:showCode" class="selflink">#</a></p><div class="doc"><p>Default implementation for pretty printing an AST to a <code>String</code>.</p></div></div><div class="top"><p class="src"><a id="v:showCodeAs" class="def">showCodeAs</a> :: (Monoid b, <a href="ASTPrettyPrinter.html#t:ASTPrettyPrinter" title="ASTPrettyPrinter">ASTPrettyPrinter</a> g) =&gt; b -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; Int -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; String -&gt; b) -&gt; (<a href="AST.html#t:Node" title="AST">Node</a> g a -&gt; b) -&gt; <a href="AST.html#t:AST" title="AST">AST</a> g a -&gt; b <a href="src/ASTPrettyPrinter.html#showCodeAs" class="link">Source</a> <a href="#v:showCodeAs" class="selflink">#</a></p><div class="doc"><p>Alias for <code><a href="ASTPrettyPrinter.html#v:prettyPrint" title="ASTPrettyPrinter">prettyPrint</a></code>.</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.23.0</p></div></body></html>

0 commit comments

Comments
 (0)