我正在尝试确定一个有效的移动。此举必须符合两个条件才能成为有效举措。第一个条件是确保我想移动的位置没有已经存在的棋子,第二个条件是确保我在进行此移动时将得分。在haskell中使用警卫时的多个条件
我已经完成了第一个条件的代码,但是我不知道如何在第二个条件下跟随它。也许之所以困难的原因是因为它返回一个Bool,当满足其他条件之一时需要将其设置为True或False。例如
因此,您可以看到,我已经完成了第一个条件的代码,现在我该如何在第二个条件中添加?
喜欢的东西
valid :: Piece -> Pieces -> Bool
valid p [] = True
valid p (x:xs) | getPos(p) == getPos(x) = False
| otherwise = valid p xs
&& ...
不过话又说回来,这个函数将第一条件或是发生故障,或通过停止。这是什么工作?
编辑:声明
data Piece = Piece Position Player
type Pieces = [Piece]
编辑:GETPOS
GETPOS是获取一块的位置