19

我刚刚开始在 Haskell 中玩耍。使用 Ruby 多年后,我习惯了 Ruby on Rails 或 Rugui 使用的文件组织。

有没有关于 Haskell 程序中文件组织的指导方针、最佳实践,甚至可能是框架?

(“Learn you a Haskell”和“Real World Haskell”并没有真正解决这个问题。)

4

3 回答 3

16

haskell.org定义了两种可能有用的文件和目录布局,以及一些工具指南。

于 2009-09-10T12:34:25.927 回答
4

主要限制是分层模块名称必须具有分层目录布局。

所以 Data.Map.Fast 进入 Data/Map/Fast.hs

之后,将您的程序和库分解为逻辑单元,在单独的模块中,并让依赖关系解析根据需要解析模块。

于 2009-09-10T21:37:36.397 回答
1

我知道这是一个非常古老的问题,但作为一个为此苦苦挣扎的初学者,我仍然没有找到令人满意的答案,而且关于如何布局项目的指导似乎很少。

这是我发现有用的。

从本质上讲,项目布局是为了让我们了解在开发时从哪里开始,因此它与我们如何开发程序密切相关。例如,在java之类的你做接口,然后实现它。区分接口和类可以帮助您对先出现的和后出现的进行排序。

同样的事情也适用于haskell,因为你的开发模式,你开始实现你的想法的地方大致决定了你如何布局你的项目。


这是我的一个小项目的摘录:

- README.md
- LICENSE
- docs/
- package.yml
- stack.yml
- Setup.hs
- tests/
  - SomeTypeSpec.hs
- app/
  - Main.hs
- src/
  - Primitive/
    - Definition/
      - SomeType.hs
      - Error.hs
    - Instance/
      - SomeType.hs
  - FunctionDef/
    - Setter.hs
  - Control/
    - SomeType.hs
    - MyProcess.hs

我对此进行迭代的方式如下:

  • 写一个SomeType.hs下面Definition有一些广告。
  • 写关于SomeType里面的相关错误Error.hs
  • 编写Setter.hsby SomeTypeunder的实现Instance
  • SomeType.hs根据应用逻辑编写控制函数Control
  • 写一个小测试套件,了解SomeType.hs下相关的功能是什么tests
  • 修复编译错误。
  • 修复编译错误。
  • 修复编译错误。
  • 修复编译错误。. . .
  • 用另一个原语重复相同的过程
于 2019-12-11T03:38:02.453 回答