功能语言是否有任何标准文档(例如UML)?在下载了用Erlang编写并查看我感到震惊的源代码的Couch DB之后,几乎没有一系列文档。是否无需记录所有这些功能如何相互取决于彼此?是否可以免费获得的中等规模项目,使用此范式如何完成工作?

有帮助吗?

解决方案

无论语言如何,都应记录该代码。

似乎有一个 标准文档样式称为EDOC. 。 EDOC能够生成外部API文档;从一个来源引用:

EDOC是ERLANG标准应用程序,可直接在ERLANG代码中记录ERLANG API。

这在 erlang.org的文档部分:

EDOC可让您使用``@name ...''表单上的标签在源代码本身中的注释编写Erlang程序的文档。源文件不必包含EDOC的标签即可生成其文档,但是如果没有标签,结果将仅包含可以从模块中提取的基本可用信息。

一个 专注于Google搜索 会带你从这里带你。

其他提示

在Haskell或ML等功能性语言中,具有类型甚至模块类型(在标准ML中称为“签名”)中,这些类型提供了很多文档。在没有编译器检查类型的方案之类的功能语言中,它们使用“合同”,除非它们在草率时。

Erlang是在爱立信开发的,电信行业具有非常强烈的文化和测试记录。如果关于这些功能应该如何工作的文档在某个地方的测试套件中,这不会令我感到惊讶。

概括: 标准最接近的两种方法是类型(对于具有静态类型系统的功能性语言)和合同(对于没有静态类型系统的功能语言)。

这是一个非常有趣的问题!

有两个问题 - 第一个是评论代码并编写一些文档(以文本形式)。这应该像OO语言一样以通常的方式完成。您只需编写您在项目中使用的所有模块,功能和类型的概述即可。在F#(.NET的功能语言)中,您可以以与F#相似的方式编写XML评论,并从这些注释中生成文档。我相信 F#文档 在MSDN上是从这些注释自动生成的。这是F#源代码中的一个示例(如果您为VS 2008安装F#,它将安装Core库的源代码,这可能是一个有趣的资源):

/// Return the first element of the list.
///
/// Raises <c>System.ArgumentException</c> if <c>list</c> is empty
val head: list:'T list -> 'T

您提到的第二件事是UML-没有用于功能语言的图表的标准。这似乎是一个棘手的问题。但是,当然可以为使用某些特定库的代码创建图表。许多功能库允许您通过构成几个简单功能来撰写代码。列表处理是一个很好的例子:

let custNames = customers |> List.map (fun customer -> customer.Name) 
let empNames = employees |> List.map (fun employee -> employee.Name) 
let result = List.concat [custNames; empNames]

通过绘制数据流,可以很好地在视觉上表示:

+-----------+    +-----+
| customers |--->| map |\
+-----------+    +-----+ \ +--------+   +--------+
                          >| concat |-->| result |
+-----------+    +-----+ / +--------+   +--------+
| employees |--->| map |/
+-----------+    +-----+

可以为许多功能库做类似的图纸,并且似乎非常有用(这是您在白板讨论某些东西时绘制的东西)。但是,据我所知,没有工具可以自动执行此操作(尽管应该是恕我直言)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top