所以我有一个函数
otherfunction :: Int -> Bool
otherfunction = True
实施otherfunction
无关紧要
function :: [Int] -> world -> world
function listOfInts World | [otherfunction x <- listOfInts] = world {alive = False}
| otherwise world
因此,如果otherfunction(x)
中的任何listOfInts
返回一个False
,我希望它完成那个世界{alive is False},我该如何实现呢?我也许可以做False
元素[otherfunction x <- listOfInts]
,在Haskell中有更好的方法吗?
感谢急需的帮助,我是函数编程的新手。
答案 0 :(得分:4)
您可以使用此列表的world
将&&
设置为all otherfunction
,例如:
function :: [Int] -> World -> World
function listOfInts world = world {alive = alive world && allOther }
where allOther = all otherfunction listOfInts
因此,从listOfInts
中的一个具有元素i
的那一刻起,otherfunction i
返回False
,all otherfunction listOfInts
将返回False
,并且因此,我们改变了世界的alive
。
我们还可以使用条件表达式:
function :: [Int] -> World -> World
function listOfInts world | alive world && not allOther = world {alive = False }
| otherwise = world
where allOther = all otherfunction listOfInts
我们还可以省略alive world
支票。但这意味着,如果世界已经死了,我们可能会在列表中做很多事情,这不是必须的。
答案 1 :(得分:4)
您似乎正在寻找all
:
function :: [int] -> world -> world
function listOfInts world
| all otherfunction listOfInts = world
| otherwise = world {alive = false}