我曾经写过很多文学编程。
你在Haddock注释中写什么?在文学部分中写什么?
外部API文档写在Haddock注释中。其他所有内容都写在文学部分中。"其他所有内容"可能包括:
- 数据结构的内部不变式
- 为什么要这样做
- 代码的设计
- 为什么选择这种设计,尝试了哪些其他设计并且发现不合适
如何将文学编程扩展到多个文件?
与将大型LaTeX文档扩展到多个文件的方式相同:每个模块一个文件,然后有一个包含它们所有的巨大文件。
有人能给我指出一个使用多个模块的包中使用文学编程的例子吗?
虽然它不是Haskell,但Quick C-- compiler是一个使用文学编程编写的大型函数程序。
您在使用文学编程处理更大的软件包时的经验是什么?
Literate编程非常适用于记录棘手、困难或复杂的模块。对于大多数简单的模块,外部API文档(例如Haddock)已经足够了。没有哪一个Literate程序真正能够给你一个包含超过十几个模块的设计的总体印象。因此,你需要其他工具和技巧。
“
Markdown, LaTeX等的Literate Haskell更受欢迎是为什么?”
如果您进行这样重要的投资,我肯定会选择LaTeX,因为它具有数学功能和更强大的工具。
“为什么你在使用Literate Haskell或者普通的Haskell编程?你在两种风格中都进行编程吗?如果确实如此,为什么?”
我的Haskell代码几乎都是普通的,原因有两个:
我与有更多Haskell经验的高级人员共事,他们已经放弃了Literate Haskell。只有他们系统中最古老的模块有任何成为.lhs文件的可能性。
对于Haskell,Literate编程有点多余。Literate编程工具的一个很大好处是你不必受到编译器或语言定义可能对代码顺序施加的任何限制。但是Haskell几乎没有这样的限制:没有定义先于使用,并且对于典型的函数定义,我可以选择let绑定或where绑定辅助名称(或两者都有)。Literate编程从来不仅仅是花哨的注释,而对于“literate” Haskell,你所得到的就是这些。这非常麻烦,不值得。
你更喜欢块状样式(\begin{code})还是鸟状样式(>)?为什么?
我强烈偏爱块状样式: