Professional Documents
Culture Documents
Haddock Revamp - HIW 2010
Haddock Revamp - HIW 2010
Mark Lentczner
Haddock Revamp Haskell Implementors
Workshop - 2010
Why Bother?
Possible to parse
ppPrologue ppTyInstHeader bodyBox declWithDoc ndocBox ppInstHead ppLFunLhType ppLContextNoArrow ppShortDataDecl ppSideBySideField
mkNode processForMiniSynopsis docBox ppAppNameTypes topDeclBox equals argBox maybeRDocBox ppDataHeader ppModuleContents
spliceURL rdrDocToHtml origDocToHtml <++> collapsebutton ppTyFamHeader docToHtml ppParendType declBox ppFunLhType rdocBox
unParagraph parHtmlMarkup ppTyClBinderWithVarsMini ppKind pREC_CON pREC_OP pabrackets ppBang ppr_fun_ty ppTypeSig ppFds ppAppDocNameNames ppForAll ppShortField ppConstrHdr
ppLParendType
ppModule markupDef ppNameMini ppTypeApp maybeParen ppr_mono_lty pREC_FUN arrow punctuate ppContextNoArrow dot ppTyVars ppBinder ppLContext forallSymbol
ppRdrName ppPred
ppDocName ppLType
pREC_TOP
The original HTML backend call graph - thinned and hand laid out
Approach
Narrow imports
ppDecl :: … -> LHsDecl DocName -> DocForDecl DocName -> [DocInstance DocName]
-> [(DocName, DocForDecl DocName)] -> … -> Html
ppDecl :: … -> LHsDecl DocName -> DocForDecl DocName -> [DocInstance DocName]
-> [(DocName, DocForDecl DocName)] -> … -> Html
<p>Hello</p>
<p class="big">Hello</p>
Looks like a combinator…
<p class="big">Hello</p>
National Archives
Local Workflow
.cabal
cabal
ghc
haddock
hscolour
Large Project Workflow
.cabal
.sh
.cabal
bash
haddock
.cabal
Using a Library Workflow
user
&/or
cabal
system
Hackage Workflow
magic
GHC Boot Library Workflow
time
dph
containers
array
bytestring
ghc-prim
haskell98 base
Multiple Deployments
Files
Served
Packaged
Future Work
Endless Tweaking
New Themes
Source Code
Better integration with Hscolour
In-line source
Search
In-line search
Integration w/Hoogle & Hayoo
Workflows
Johan Tibell
Mark Lentczner
Ross Paterson
Simon Marlow
Thomas Shilling
public domain image from NOAA's Historic Fisheries Collection
Mark Lentczner
Fin markl@glyphic.com