Вы можете просто установить world
как &&
с all otherfunction
этого списка, например:
function :: [Int] -> World -> World
function listOfInts world = world {alive = alive world && allOther }
where allOther = <b>all otherfunction listOfInts</b>
Так что с того момента, как один из 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
.Но это означает, что если мир уже мертв, мы можем сделать много прецессии в списке, в этом нет необходимости.