Changes for skylighting-0.5.
This fixes a bug in 2.0.4, whereby pandoc could not read the theme files generated with `--print-highlight-style`. It also fixes some CSS issues involving line numbers. Highlighted code blocks are now enclosed in a div with class sourceCode. Highlighting CSS no longer sets a generic color for pre and code; we only set these for class `sourceCode`. This will close #4133 and #4128.
This commit is contained in:
parent
1cd785fe33
commit
5e039d913f
9 changed files with 114 additions and 94 deletions
|
@ -322,7 +322,7 @@ library
|
||||||
tagsoup >= 0.14.2 && < 0.15,
|
tagsoup >= 0.14.2 && < 0.15,
|
||||||
base64-bytestring >= 0.1 && < 1.1,
|
base64-bytestring >= 0.1 && < 1.1,
|
||||||
zlib >= 0.5 && < 0.7,
|
zlib >= 0.5 && < 0.7,
|
||||||
skylighting >= 0.4.4.1 && < 0.5,
|
skylighting >= 0.5 && < 0.6,
|
||||||
data-default >= 0.4 && < 0.8,
|
data-default >= 0.4 && < 0.8,
|
||||||
temporary >= 1.1 && < 1.3,
|
temporary >= 1.1 && < 1.3,
|
||||||
blaze-html >= 0.5 && < 0.10,
|
blaze-html >= 0.5 && < 0.10,
|
||||||
|
|
|
@ -1074,7 +1074,8 @@ options =
|
||||||
(map T.pack
|
(map T.pack
|
||||||
["text-color"
|
["text-color"
|
||||||
,"background-color"
|
,"background-color"
|
||||||
,"line-numbers"
|
,"line-number-color"
|
||||||
|
,"line-number-background-color"
|
||||||
,"bold"
|
,"bold"
|
||||||
,"italic"
|
,"italic"
|
||||||
,"underline"
|
,"underline"
|
||||||
|
|
|
@ -625,12 +625,12 @@ styleToOpenXml sm style =
|
||||||
[ mknode "w:u" [] () | tokFeature tokenUnderline toktype ]
|
[ mknode "w:u" [] () | tokFeature tokenUnderline toktype ]
|
||||||
]
|
]
|
||||||
tokStyles = tokenStyles style
|
tokStyles = tokenStyles style
|
||||||
tokFeature f toktype = maybe False f $ lookup toktype tokStyles
|
tokFeature f toktype = maybe False f $ M.lookup toktype tokStyles
|
||||||
tokCol toktype = maybe "auto" (drop 1 . fromColor)
|
tokCol toktype = maybe "auto" (drop 1 . fromColor)
|
||||||
$ (tokenColor =<< lookup toktype tokStyles)
|
$ (tokenColor =<< M.lookup toktype tokStyles)
|
||||||
`mplus` defaultColor style
|
`mplus` defaultColor style
|
||||||
tokBg toktype = maybe "auto" (drop 1 . fromColor)
|
tokBg toktype = maybe "auto" (drop 1 . fromColor)
|
||||||
$ (tokenBackground =<< lookup toktype tokStyles)
|
$ (tokenBackground =<< M.lookup toktype tokStyles)
|
||||||
`mplus` backgroundColor style
|
`mplus` backgroundColor style
|
||||||
parStyle | hasStyleName "Source Code" (sParaStyleMap sm) = Nothing
|
parStyle | hasStyleName "Source Code" (sParaStyleMap sm) = Nothing
|
||||||
| otherwise = Just $
|
| otherwise = Just $
|
||||||
|
|
|
@ -586,7 +586,7 @@ styleToMs sty = vcat $ colordefs ++ map (toMacro sty) alltoktypes
|
||||||
allcolors = catMaybes $ ordNub $
|
allcolors = catMaybes $ ordNub $
|
||||||
[defaultColor sty, backgroundColor sty,
|
[defaultColor sty, backgroundColor sty,
|
||||||
lineNumberColor sty, lineNumberBackgroundColor sty] ++
|
lineNumberColor sty, lineNumberBackgroundColor sty] ++
|
||||||
concatMap (colorsForToken. snd) (tokenStyles sty)
|
concatMap (colorsForToken. snd) (Map.toList (tokenStyles sty))
|
||||||
colorsForToken ts = [tokenColor ts, tokenBackground ts]
|
colorsForToken ts = [tokenColor ts, tokenBackground ts]
|
||||||
|
|
||||||
hexColor :: Color -> String
|
hexColor :: Color -> String
|
||||||
|
@ -611,7 +611,7 @@ toMacro sty toktype =
|
||||||
resetfont = if tokBold || tokItalic
|
resetfont = if tokBold || tokItalic
|
||||||
then text "\\\\f[C]"
|
then text "\\\\f[C]"
|
||||||
else empty
|
else empty
|
||||||
tokSty = lookup toktype (tokenStyles sty)
|
tokSty = Map.lookup toktype (tokenStyles sty)
|
||||||
tokCol = (tokSty >>= tokenColor) `mplus` defaultColor sty
|
tokCol = (tokSty >>= tokenColor) `mplus` defaultColor sty
|
||||||
-- tokBg = (tokSty >>= tokenBackground) `mplus` backgroundColor sty
|
-- tokBg = (tokSty >>= tokenBackground) `mplus` backgroundColor sty
|
||||||
tokBold = fromMaybe False (tokenBold <$> tokSty)
|
tokBold = fromMaybe False (tokenBold <$> tokSty)
|
||||||
|
|
|
@ -16,7 +16,7 @@ extra-deps:
|
||||||
- pandoc-types-1.17.3
|
- pandoc-types-1.17.3
|
||||||
- hslua-0.9.3
|
- hslua-0.9.3
|
||||||
- hslua-module-text-0.1.2
|
- hslua-module-text-0.1.2
|
||||||
- skylighting-0.4.4.1
|
- skylighting-0.5
|
||||||
- texmath-0.10
|
- texmath-0.10
|
||||||
- cmark-gfm-0.1.1
|
- cmark-gfm-0.1.1
|
||||||
- QuickCheck-2.10.0.1
|
- QuickCheck-2.10.0.1
|
||||||
|
|
|
@ -5,12 +5,11 @@ flags:
|
||||||
old-locale: false
|
old-locale: false
|
||||||
network-uri: true
|
network-uri: true
|
||||||
packages:
|
packages:
|
||||||
- '.'
|
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- pandoc-types-1.17.3
|
- pandoc-types-1.17.3
|
||||||
- hslua-0.9.3
|
- hslua-0.9.3
|
||||||
- hslua-module-text-0.1.2
|
- hslua-module-text-0.1.2
|
||||||
- skylighting-0.4.4.1
|
- skylighting-0.5
|
||||||
- texmath-0.10
|
- texmath-0.10
|
||||||
- cmark-gfm-0.1.1
|
- cmark-gfm-0.1.1
|
||||||
- QuickCheck-2.10.0.1
|
- QuickCheck-2.10.0.1
|
||||||
|
|
|
@ -13,16 +13,24 @@
|
||||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||||
</style>
|
</style>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
a.sourceLine { display: inline-block; min-height: 1.25em; }
|
a.sourceLine { display: inline-block; line-height: 1.25; }
|
||||||
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
|
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
|
||||||
|
a.sourceLine:empty { height: 1.2em; position: absolute; }
|
||||||
.sourceCode { overflow: visible; }
|
.sourceCode { overflow: visible; }
|
||||||
code.sourceCode { white-space: pre; }
|
code.sourceCode { white-space: pre; position: relative; }
|
||||||
|
div.sourceCode { margin: 1em 0; }
|
||||||
|
pre.sourceCode { margin: 0; }
|
||||||
|
@media screen {
|
||||||
|
div.sourceCode { overflow: auto; }
|
||||||
|
}
|
||||||
@media print {
|
@media print {
|
||||||
code.sourceCode { white-space: pre-wrap; }
|
code.sourceCode { white-space: pre-wrap; }
|
||||||
a.sourceLine { text-indent: -1em; padding-left: 1em; }
|
a.sourceLine { text-indent: -1em; padding-left: 1em; }
|
||||||
}
|
}
|
||||||
pre.numberSource a.sourceLine
|
pre.numberSource a.sourceLine
|
||||||
{ position: relative; }
|
{ position: relative; }
|
||||||
|
pre.numberSource a.sourceLine:empty
|
||||||
|
{ position: absolute; }
|
||||||
pre.numberSource a.sourceLine::before
|
pre.numberSource a.sourceLine::before
|
||||||
{ content: attr(data-line-number);
|
{ content: attr(data-line-number);
|
||||||
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
|
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
|
||||||
|
@ -34,38 +42,40 @@ pre.numberSource a.sourceLine::before
|
||||||
color: #aaaaaa;
|
color: #aaaaaa;
|
||||||
}
|
}
|
||||||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||||||
|
div.sourceCode
|
||||||
|
{ }
|
||||||
@media screen {
|
@media screen {
|
||||||
a.sourceLine::before { text-decoration: underline; color: initial; }
|
a.sourceLine::before { text-decoration: underline; }
|
||||||
}
|
}
|
||||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||||
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||||
|
code span.at { color: #7d9029; } /* Attribute */
|
||||||
|
code span.bn { color: #40a070; } /* BaseN */
|
||||||
|
code span.bu { } /* BuiltIn */
|
||||||
|
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||||
|
code span.ch { color: #4070a0; } /* Char */
|
||||||
|
code span.cn { color: #880000; } /* Constant */
|
||||||
|
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||||
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||||
|
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||||
code span.dt { color: #902000; } /* DataType */
|
code span.dt { color: #902000; } /* DataType */
|
||||||
code span.dv { color: #40a070; } /* DecVal */
|
code span.dv { color: #40a070; } /* DecVal */
|
||||||
code span.bn { color: #40a070; } /* BaseN */
|
|
||||||
code span.fl { color: #40a070; } /* Float */
|
|
||||||
code span.ch { color: #4070a0; } /* Char */
|
|
||||||
code span.st { color: #4070a0; } /* String */
|
|
||||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
|
||||||
code span.ot { color: #007020; } /* Other */
|
|
||||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
|
||||||
code span.fu { color: #06287e; } /* Function */
|
|
||||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
|
||||||
code span.cn { color: #880000; } /* Constant */
|
|
||||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
|
||||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
|
||||||
code span.ss { color: #bb6688; } /* SpecialString */
|
|
||||||
code span.im { } /* Import */
|
|
||||||
code span.va { color: #19177c; } /* Variable */
|
|
||||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
|
||||||
code span.op { color: #666666; } /* Operator */
|
|
||||||
code span.bu { } /* BuiltIn */
|
|
||||||
code span.ex { } /* Extension */
|
code span.ex { } /* Extension */
|
||||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
code span.fl { color: #40a070; } /* Float */
|
||||||
code span.at { color: #7d9029; } /* Attribute */
|
code span.fu { color: #06287e; } /* Function */
|
||||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
code span.im { } /* Import */
|
||||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
|
||||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
|
||||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||||
|
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||||
|
code span.op { color: #666666; } /* Operator */
|
||||||
|
code span.ot { color: #007020; } /* Other */
|
||||||
|
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||||
|
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||||
|
code span.ss { color: #bb6688; } /* SpecialString */
|
||||||
|
code span.st { color: #4070a0; } /* String */
|
||||||
|
code span.va { color: #19177c; } /* Variable */
|
||||||
|
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||||
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||||
</style>
|
</style>
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||||
|
@ -75,9 +85,9 @@ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Infor
|
||||||
<h1 id="lhs-test">lhs test</h1>
|
<h1 id="lhs-test">lhs test</h1>
|
||||||
<p><code>unsplit</code> is an arrow that takes a pair of values and combines them to
|
<p><code>unsplit</code> is an arrow that takes a pair of values and combines them to
|
||||||
return a single value:</p>
|
return a single value:</p>
|
||||||
<pre class="sourceCode literate haskell" id="cb1"><code class="sourceCode haskell"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="ot">unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=></span> (b <span class="ot">-></span> c <span class="ot">-></span> d) <span class="ot">-></span> a (b, c) d</a>
|
<div class="sourceCode" id="cb1"><pre class="sourceCode literate haskell"><code class="sourceCode haskell"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="ot">unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=></span> (b <span class="ot">-></span> c <span class="ot">-></span> d) <span class="ot">-></span> a (b, c) d</a>
|
||||||
<a class="sourceLine" id="cb1-2" data-line-number="2">unsplit <span class="fu">=</span> arr <span class="fu">.</span> uncurry</a>
|
<a class="sourceLine" id="cb1-2" data-line-number="2">unsplit <span class="fu">=</span> arr <span class="fu">.</span> uncurry</a>
|
||||||
<a class="sourceLine" id="cb1-3" data-line-number="3"> <span class="co">-- arr (\op (x,y) -> x `op` y)</span></a></code></pre>
|
<a class="sourceLine" id="cb1-3" data-line-number="3"> <span class="co">-- arr (\op (x,y) -> x `op` y)</span></a></code></pre></div>
|
||||||
<p><code>(***)</code> combines two arrows into a new arrow by running the two arrows on a
|
<p><code>(***)</code> combines two arrows into a new arrow by running the two arrows on a
|
||||||
pair of values (one arrow on the first item of the pair and one arrow on the
|
pair of values (one arrow on the first item of the pair and one arrow on the
|
||||||
second item of the pair).</p>
|
second item of the pair).</p>
|
||||||
|
|
|
@ -13,16 +13,24 @@
|
||||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||||
</style>
|
</style>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
a.sourceLine { display: inline-block; min-height: 1.25em; }
|
a.sourceLine { display: inline-block; line-height: 1.25; }
|
||||||
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
|
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
|
||||||
|
a.sourceLine:empty { height: 1.2em; position: absolute; }
|
||||||
.sourceCode { overflow: visible; }
|
.sourceCode { overflow: visible; }
|
||||||
code.sourceCode { white-space: pre; }
|
code.sourceCode { white-space: pre; position: relative; }
|
||||||
|
div.sourceCode { margin: 1em 0; }
|
||||||
|
pre.sourceCode { margin: 0; }
|
||||||
|
@media screen {
|
||||||
|
div.sourceCode { overflow: auto; }
|
||||||
|
}
|
||||||
@media print {
|
@media print {
|
||||||
code.sourceCode { white-space: pre-wrap; }
|
code.sourceCode { white-space: pre-wrap; }
|
||||||
a.sourceLine { text-indent: -1em; padding-left: 1em; }
|
a.sourceLine { text-indent: -1em; padding-left: 1em; }
|
||||||
}
|
}
|
||||||
pre.numberSource a.sourceLine
|
pre.numberSource a.sourceLine
|
||||||
{ position: relative; }
|
{ position: relative; }
|
||||||
|
pre.numberSource a.sourceLine:empty
|
||||||
|
{ position: absolute; }
|
||||||
pre.numberSource a.sourceLine::before
|
pre.numberSource a.sourceLine::before
|
||||||
{ content: attr(data-line-number);
|
{ content: attr(data-line-number);
|
||||||
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
|
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
|
||||||
|
@ -34,38 +42,40 @@ pre.numberSource a.sourceLine::before
|
||||||
color: #aaaaaa;
|
color: #aaaaaa;
|
||||||
}
|
}
|
||||||
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
||||||
|
div.sourceCode
|
||||||
|
{ }
|
||||||
@media screen {
|
@media screen {
|
||||||
a.sourceLine::before { text-decoration: underline; color: initial; }
|
a.sourceLine::before { text-decoration: underline; }
|
||||||
}
|
}
|
||||||
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
||||||
|
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
||||||
|
code span.at { color: #7d9029; } /* Attribute */
|
||||||
|
code span.bn { color: #40a070; } /* BaseN */
|
||||||
|
code span.bu { } /* BuiltIn */
|
||||||
|
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
||||||
|
code span.ch { color: #4070a0; } /* Char */
|
||||||
|
code span.cn { color: #880000; } /* Constant */
|
||||||
|
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
||||||
|
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
||||||
|
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
||||||
code span.dt { color: #902000; } /* DataType */
|
code span.dt { color: #902000; } /* DataType */
|
||||||
code span.dv { color: #40a070; } /* DecVal */
|
code span.dv { color: #40a070; } /* DecVal */
|
||||||
code span.bn { color: #40a070; } /* BaseN */
|
|
||||||
code span.fl { color: #40a070; } /* Float */
|
|
||||||
code span.ch { color: #4070a0; } /* Char */
|
|
||||||
code span.st { color: #4070a0; } /* String */
|
|
||||||
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
|
||||||
code span.ot { color: #007020; } /* Other */
|
|
||||||
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
|
||||||
code span.fu { color: #06287e; } /* Function */
|
|
||||||
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
||||||
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
|
||||||
code span.cn { color: #880000; } /* Constant */
|
|
||||||
code span.sc { color: #4070a0; } /* SpecialChar */
|
|
||||||
code span.vs { color: #4070a0; } /* VerbatimString */
|
|
||||||
code span.ss { color: #bb6688; } /* SpecialString */
|
|
||||||
code span.im { } /* Import */
|
|
||||||
code span.va { color: #19177c; } /* Variable */
|
|
||||||
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
|
||||||
code span.op { color: #666666; } /* Operator */
|
|
||||||
code span.bu { } /* BuiltIn */
|
|
||||||
code span.ex { } /* Extension */
|
code span.ex { } /* Extension */
|
||||||
code span.pp { color: #bc7a00; } /* Preprocessor */
|
code span.fl { color: #40a070; } /* Float */
|
||||||
code span.at { color: #7d9029; } /* Attribute */
|
code span.fu { color: #06287e; } /* Function */
|
||||||
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
code span.im { } /* Import */
|
||||||
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
|
||||||
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
|
||||||
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
||||||
|
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
||||||
|
code span.op { color: #666666; } /* Operator */
|
||||||
|
code span.ot { color: #007020; } /* Other */
|
||||||
|
code span.pp { color: #bc7a00; } /* Preprocessor */
|
||||||
|
code span.sc { color: #4070a0; } /* SpecialChar */
|
||||||
|
code span.ss { color: #bb6688; } /* SpecialString */
|
||||||
|
code span.st { color: #4070a0; } /* String */
|
||||||
|
code span.va { color: #19177c; } /* Variable */
|
||||||
|
code span.vs { color: #4070a0; } /* VerbatimString */
|
||||||
|
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
||||||
</style>
|
</style>
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||||
|
@ -75,9 +85,9 @@ code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Infor
|
||||||
<h1 id="lhs-test">lhs test</h1>
|
<h1 id="lhs-test">lhs test</h1>
|
||||||
<p><code>unsplit</code> is an arrow that takes a pair of values and combines them to
|
<p><code>unsplit</code> is an arrow that takes a pair of values and combines them to
|
||||||
return a single value:</p>
|
return a single value:</p>
|
||||||
<pre class="sourceCode literate literatehaskell" id="cb1"><code class="sourceCode literatehaskell"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="ot">> unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=></span> (b <span class="ot">-></span> c <span class="ot">-></span> d) <span class="ot">-></span> a (b, c) d</a>
|
<div class="sourceCode" id="cb1"><pre class="sourceCode literate literatehaskell"><code class="sourceCode literatehaskell"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="ot">> unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=></span> (b <span class="ot">-></span> c <span class="ot">-></span> d) <span class="ot">-></span> a (b, c) d</a>
|
||||||
<a class="sourceLine" id="cb1-2" data-line-number="2"><span class="ot">></span> unsplit <span class="fu">=</span> arr <span class="fu">.</span> uncurry</a>
|
<a class="sourceLine" id="cb1-2" data-line-number="2"><span class="ot">></span> unsplit <span class="fu">=</span> arr <span class="fu">.</span> uncurry</a>
|
||||||
<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="ot">></span> <span class="co">-- arr (\op (x,y) -> x `op` y)</span></a></code></pre>
|
<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="ot">></span> <span class="co">-- arr (\op (x,y) -> x `op` y)</span></a></code></pre></div>
|
||||||
<p><code>(***)</code> combines two arrows into a new arrow by running the two arrows on a
|
<p><code>(***)</code> combines two arrows into a new arrow by running the two arrows on a
|
||||||
pair of values (one arrow on the first item of the pair and one arrow on the
|
pair of values (one arrow on the first item of the pair and one arrow on the
|
||||||
second item of the pair).</p>
|
second item of the pair).</p>
|
||||||
|
|
|
@ -39,37 +39,37 @@
|
||||||
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
||||||
% Add ',fontsize=\small' for more characters per line
|
% Add ',fontsize=\small' for more characters per line
|
||||||
\newenvironment{Shaded}{}{}
|
\newenvironment{Shaded}{}{}
|
||||||
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||||
|
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||||
|
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
||||||
|
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||||
|
\newcommand{\BuiltInTok}[1]{#1}
|
||||||
|
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||||
|
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
||||||
|
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||||
|
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
||||||
|
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||||
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
||||||
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||||
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
||||||
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
||||||
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
|
||||||
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
||||||
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
||||||
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
||||||
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
||||||
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
|
||||||
\newcommand{\ImportTok}[1]{#1}
|
|
||||||
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
|
||||||
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
||||||
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
||||||
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
||||||
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
|
||||||
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
|
||||||
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
|
||||||
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
||||||
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
|
||||||
\newcommand{\BuiltInTok}[1]{#1}
|
|
||||||
\newcommand{\ExtensionTok}[1]{#1}
|
|
||||||
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
|
||||||
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
|
||||||
\newcommand{\RegionMarkerTok}[1]{#1}
|
|
||||||
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
||||||
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
||||||
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
||||||
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
||||||
|
\newcommand{\ExtensionTok}[1]{#1}
|
||||||
|
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
||||||
|
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
||||||
|
\newcommand{\ImportTok}[1]{#1}
|
||||||
|
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||||
|
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
||||||
\newcommand{\NormalTok}[1]{#1}
|
\newcommand{\NormalTok}[1]{#1}
|
||||||
|
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
||||||
|
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
||||||
|
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
||||||
|
\newcommand{\RegionMarkerTok}[1]{#1}
|
||||||
|
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||||
|
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
||||||
|
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||||
|
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
||||||
|
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
||||||
|
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
||||||
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||||
\providecommand{\tightlist}{%
|
\providecommand{\tightlist}{%
|
||||||
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||||
|
|
Loading…
Add table
Reference in a new issue