[Haskell-cafe] Documenting Examples for a library
Guru Devanla
gurudev.devanla at gmail.com
Thu Mar 15 13:23:02 UTC 2018
Hello,
I am close to releasing a new version of the
https://hackage.haskell.org/package/pptable library I have been working on
off late. I am a little confused on what approach I need to take regarding
providing good documentation and working examples.
Please, note that I am not referring to the API documentation attached to
the code. For API documentation I will continue to use haddock and generate
documentation as I build.
The approaches I have in mind to provide clear examples are as follows:
1. Provide a README.md and document all usage examples in markdown format.
Allow github to produce the HTML.
2. Create and ship an Example.hs file along with library. Using a .hs file
allows haddock to build the documentation as part of the package. I took
this approach for the previous release. Here is an example:
https://hackage.haskell.org/package/pptable-0.2.0.0/docs/Text-PrettyPrint-Tabulate-Example.html.
3. Using Example.lhs. I like this approach since it lets me load the code
in ghci and test out the examples seamlessly. But, I am hitting roadblocks
with this, since I am not able to include this file as part of my stack
project. `stack haddock` fails too.
When I include .lhs file in a stack project, I get the following error
File name does not match module name:
Saw: ‘Main’
Expected: ‘Text.PrettyPrint.Tabulate.Example’
I like (3) because I can make sure my examples run successfully, (using
stack ghci Example.lhs), before I publish them. With options (1) and (2), I
need to manually copy/past code into ghci to make sure there are no errors.
Is there a better way to do this?
Please could the group provide any recommendations and guidance on what
approach I should be taking and why.
Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180315/fcf0df5d/attachment.html>
More information about the Haskell-Cafe
mailing list