【问题标题】:How to organize files in Haskell programs?如何在 Haskell 程序中组织文件?
【发布时间】:2009-09-10 12:09:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: haskell organization


    【解决方案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
    

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

    • Definition 下写一个SomeType.hs,其中有一些广告。
    • Error.hs 中写入有关SomeType 的相关错误
    • Instance 下由SomeType 编写Setter.hs 的实现
    • 根据应用编写关于SomeType.hs的控制函数 Control下的逻辑
    • 写一个小测试套件,了解SomeType.hstests下的功能是什么
    • 修复编译错误。
    • 修复编译错误。
    • 修复编译错误。
    • 修复编译错误。 . . .
    • 用另一个原语重复相同的过程

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2012-08-09
          • 1970-01-01
          • 2018-03-10
          • 2012-01-03
          • 2021-05-18
          • 2015-05-18
          • 1970-01-01
          • 2023-03-04
          • 2011-07-31
          相关资源
          最近更新 更多