小编Try*_*ler的帖子

为什么Haddock文档没有出现在Hackage上?

我有一个关于Hackage软件包,它已经生成了文件,但它没有出现在Hackage页面上.我能够成功上传所有内容,但文档没有显示出来.

我在Leksah IDE中使用cabal haddock或生成文档Package > Build Documentation.

当我去Package > Open DocLeksah时,它找不到它,因为它正在寻找,dist/doc/html/hspec/hspec/index.html但生成的文件是dist/doc/html/hspec/index.html.我认为Hackage也在寻找同一个地方.

我猜我的源文件不在预期的位置,但我不知道它们应该如何.

源和目录结构可以在https://github.com/trystan/hspec找到.

haskell cabal hackage haddock leksah

13
推荐指数
1
解决办法
1432
查看次数

触发CQRS中其他域更改的域事件

在我看到的所有CQRS示例中,域事件触发了对读取模型的更新,但没有其他任何内容.但是,当您希望域事件在域中引起其他更改时呢?

例如,假设您有以下要求:

  • 单击"关闭帐户"按钮时,关闭该帐户
  • 当帐户被还清时,关闭帐户
  • 帐户关闭时,将帐户所有者标记为"特殊"

处理这个问题的最佳方法是什么?

  1. 使Account.Close()创建一个AccountClosed事件,并将所有者标记为"特殊"
  2. 创建一个AccountClosed处理程序,将所有者标记为"特殊"
  3. 创建一个AccountClosed处理程序,提交MarkOwnerAsSpecial命令
  4. 使关闭帐户的命令处理程序也将帐户所有者标记为"特殊"

domain-driven-design cqrs domain-events

8
推荐指数
1
解决办法
1620
查看次数

如何抽象一个常见的Haskell递归applicative仿函数模式

在Haskell中使用applicative functor的时候,我经常会遇到这样的情况,我最终会得到这样的重复代码:

instance Arbitrary MyType where
  arbitrary = MyType <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我想说:

instance Arbitrary MyType where
  arbitrary = applyMany MyType 4 arbitrary
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何制作applyMany(或类似的东西).我甚至无法弄清楚类型是什么,但它需要一个数据构造函数,一个Int (n)和一个函数来应用n次.在为QuickCheck,SmallCheck,Data.Binary,Xml序列化和其他递归情况创建实例时会发生这种情况.

那我怎么定义applyMany

haskell functor typeclass applicative

7
推荐指数
4
解决办法
1134
查看次数

测试简单的代码呢?

我尝试过单元测试,我不是一个大粉丝; 它更多的是负担而不是恩惠.那么我应该对这个简单的2D点类进行哪些测试呢?

public class Point{
    int x;
    int y;

    public Point(int px, int py) {
        x = px;
        y = py;
    }

    public double distanceTo(Point other) {
        // Pythagorean theorem
    }

    public ArrayList<Point> lineTo(Point other) {
        // Bresenham's line algorithm. The same thing I've
        // implemented a dozen times in differnt languages 
        // and can type from memory....
    }
}
Run Code Online (Sandbox Code Playgroud)

每种方法需要多少次测试?另一点可以与第一个或同一个四个象限中的一个位于同一位置,或者为空.那么每种方法有六个单元测试吗?

有可能让代码如此简单明了,以至于单元测试提供的价值很小,以至于它们不值得吗?

(到目前为止的响应是:应该为任何可以为null的参数,可以作为对象本身的任何参数(即this.distanceTo(this)),任何可能导致溢出的参数以及任何可能导致溢出的参数编写测试可能会导致浮点精度损失.至少有四件事要写测试.)

tdd unit-testing

1
推荐指数
2
解决办法
226
查看次数