标签: literate-programming

如何管理特殊情况和启发式

我经常使用基于特定定义算法的代码.这得到了很好的评论,似乎是正确的.对于大多数数据集,算法运行良好.

但随后边缘情况,特殊情况,启发式方法被添加以解决特定数据集的特定问题.随着特殊情况的数量增加,评论越来越模糊.我担心在一年左右的时间内回过头来查看这段代码并试图记住为什么会添加每个特殊的特例或启发式.

我有时希望有一种方法可以在源代码中嵌入或链接图形,所以我可以有效地说,"在这个数据集的图形中,这个特殊功能导致例程不正确地触发,所以这就是为什么这个代码被添加".

处理这种情况的最佳做法是什么?

似乎总是需要特殊情况来处理这些异常/边缘情况.如何管理它们以使代码保持相对可读性和可理解性?

考虑一个处理照片特征识别的例子(不完全是我正在研究的,但类比似乎很合适).当我找到一般算法失败并且需要特殊情况的特定图片时,我尽可能地在评论中记录该信息(或者如下面的某人建议的描述性函数名称).但是经常缺少的是指向展示相关行为的特定数据文件的永久链接.虽然我的评论应该描述这个问题,并且可能会说"请参阅文件foo.jp以获取此行为的示例",但此文件永远不会出现在源代码树中,并且很容易丢失.

在这种情况下,人们是否会将数据文件添加到源树中以供参考?

c c++ literate-programming

6
推荐指数
2
解决办法
913
查看次数

有没有人尝试使用Lyx和noweb进行C#的文字编程

昨天我发现了这篇博客文章,它再一次让我想尝试一下文字编程.

有没有其他人尝试为C#进行文字编程?我想知道尝试Lyx + noweb,但想知道你是否有其他经验或建议.

c# noweb literate-programming lyx

6
推荐指数
1
解决办法
1833
查看次数

任何有文化的编程环境是否支持即时结果?

我目前正在写很多小报道.其中大多数只是价值转储,包含一些图表和说明性评论.

是否有一个有文化的编程环境,让我以简单的格式(最好是markdown/latex和haskell)编写我的报告,然后转换为某种输出格式(最好是pdf),其中包含在原始文件中完成的计算结果?

我知道Haskell支持有文化的编程,但我不认为可以捕获输出(可能还有整个图像).

markdown latex haskell literate-programming

6
推荐指数
1
解决办法
453
查看次数

具有交叉引用的最小noweb示例

我正在努力寻找一个好的文字编程工具.我们只是说这不是一个简单的决定.(通用的太通用了,具体的太具体了:))

在其他方面,我已经noweb起步并运行,但我很难获得像我期望的输出.在noweb 维基百科页面有与正确建立一个小例子,

noweave -index -latex hello.noweb > hello.tex && pdflatex hello && pdflatex hello
Run Code Online (Sandbox Code Playgroud)

但每个块的末尾没有交叉引用.例如,CWEB有指针,例如"此代码在第12节中使用".和"另见第5和第7节".这个功能是否完全缺失,noweb或者我是否错过了编译中的一个步骤?

noweb literate-programming

5
推荐指数
1
解决办法
937
查看次数

在org-babel编织的noweb风格

我正在使用Emacs 23和Org 7.8.04.我的代码结构如下:

#+TITLE: hello, world!

#+BEGIN_SRC python :tangle yes :noweb yes
<<go_function>>
if __name__ == "__main__":
    go()
#+END_SRC

Define =go_function= as follows.

#+name:go_function
#+BEGIN_SRC python
def go:
    print "hello, world!"
#+END_SRC
Run Code Online (Sandbox Code Playgroud)

当我尝试编写文档时,<<go_function>>第一个代码块中的第一个代码块也被导出为html,因此我有两个html导出<<go_function>>.我希望将 <<go_function>>导出为链接,指向文档末尾的实际定义.我该怎么做?

emacs literate-programming org-mode org-babel

5
推荐指数
1
解决办法
1202
查看次数

Literate Haskell中的条件编译

我有一个识字的haskell文件,并希望使用条件编译.我使用文字编程的鸟类风格.以下代码不起作用.

> #if MIN_VERSION_base(4,6,0)
> import Control.Exception
> #endif
Run Code Online (Sandbox Code Playgroud)

我需要一个cabal 1.14.0的解决方案

编辑:

cpphs有一个选项--unlit可以取消识别源代码,但我不知道如何将此选项传递给cabal中的cpphs.

preprocessor haskell literate-programming cabal

5
推荐指数
1
解决办法
250
查看次数

如何评论文字haskell中的行

我无法在lhs风格的haskell程序中注释出代码行,所以haskell和Latex都忽略了这一行.

当我使用时,--我的lh2tex将尝试将haskell代码渲染为注释.但这通常会失败,因为代码中包含美元和其他令Latex混淆的东西.

当我使用时--%,Latex很高兴,因为它只是忽略了评论,但是haskell不喜欢--%.只有当我在--哈斯克尔之后放一个空格时才可以,但乳胶再次抱怨.

latex haskell literate-programming

5
推荐指数
1
解决办法
3244
查看次数

自然语言编程与文学编程

我看不出自然语言编程和文学编程之间的区别。如果有人解释,我将不胜感激。

literate-programming

5
推荐指数
1
解决办法
273
查看次数

如何在`scribble/lp`中使用`typed/racket`

是否可以使用其他#langs in#lang scribble/lp进行文学编程?

例如,我想#lang typed/racket#lang scribble/lp. 如何意识到这一点?

literate-programming racket scribble typed-racket

5
推荐指数
1
解决办法
321
查看次数

以 cweb 或 noweb 样式导出代码块名称?

在 Org 模式下编写文学程序时,导出类似于在早期的文学编程工具(如 cweb 或 noweb)中编织。这些工具会将代码块名称添加到编织(导出)输出中。在 Org 模式下,它看起来像这样:

组织文件:

#+NAME: mycodeblock
#+BEGIN_SRC language
[Source code here]
#+END_SRC
Run Code Online (Sandbox Code Playgroud)

导出的输出:

<mycodeblock>=
[Source code here]
Run Code Online (Sandbox Code Playgroud)

我想知道 Org 模式是否支持以这种方式导出代码块的名称。如果没有,有没有办法至少将代码块的名称输出为某种标签?

我已经看到可以导出代码块名称的提示,但我没有找到确切的语法。

literate-programming org-mode

5
推荐指数
1
解决办法
509
查看次数