目前,我只使用Haddock,但在看到一些有识字的Haskell真正有趣的示例(例如this gist)之后,我有兴趣在项目中进行尝试。

我得到的问题是:

  • 您以Haddock注释写什么,在有文化的部分写什么?
  • 如何将识字编程扩展到多个文件?谁能指出一个在具有多个模块的软件包中使用识字编程的示例吗?您在大包装中使用识字编程的经验是什么?
  • 首选识字的Haskell哪种口味( Markdown , latex ,...)?
  • 为什么要使用识字的Haskell或普通 Vanilla Haskell进行编程?您是否同时使用两种风格进行编程,如果可以,为什么?
  • 您是喜欢块样式(\begin{code})还是Bird样式(>)?为什么?
  • 最佳答案

    我曾经写过很多literate programs



    外部API文档进入Haddock注释。其他所有内容都属于识字部分。 “其他所有内容”可能包括:

  • 数据结构的内部不变性
  • 为什么要这样处理
  • 代码的设计是
  • 为什么选择该设计,还尝试了哪些其他设计并想要



  • 用同样的方法将一个大型LaTeX文档缩放到多个文件:每个模块一个文件,然后是\include将所有文件全部保存的巨型文件。



    它不是Haskell,而是Quick C-- compiler是使用识字编程编写的大型功能程序。



    精巧的编程非常适合记录棘手,困难或复杂的模块。对于大多数简单的模块,外部API文档(例如Haddock)就足够了。而且没有一个识字程序可以真正为您提供包含十几个模块的设计的全景图。为此,您需要其他工具和技术。



    如果您要进行如此大的投资,那么我绝对会选择LaTeX只是因为它具有数学功能以及该工具通常更强大的功能。



    我的Haskell代码几乎总是纯普通的,有两个原因:
  • 我与拥有更多Haskell经验的高级人员一起工作,他们已经放弃了识字的Haskell。只有系统中最旧的模块才有可能成为.lhs。
  • 对于Haskell,识字编程是多余的。识字编程工具的一大好处是,您摆脱了编译器或语言定义可能对代码显示顺序施加的任何约束。但是Haskell几乎没有这样的约束:使用前没有定义,对于典型的函数定义,我可以选择let -binding或where -binding辅助名称(或两者)。 Literate programming绝不只是花哨的评论,而“识字” Haskell就是您所能获得的全部。这不值得打扰。



  • 我非常喜欢块样式:
  • 它与地球上的所有其他识字编程工具大致兼容。 (鸟音是Haskell特有的。)
  • 我的编辑器可以更好地处理块样式。
  • 关于haskell - 识字Haskell(.lhs)和Haddock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2707645/

    10-13 09:41