У меня есть блок кода, который я написал, который не компилируется, потому что блок if/then/else не изложен так, как понимает компилятор, однако я не могу понять, как его переписать. что может.
playRandomly board = do
let vMoves = getValidMoves board board
if vMoves == [] then return [] else
rMove <- uniform vMoves
let Just nBoard = runMove board rMove
rest <- playRandomly nBoard
return (rMove : rest)
в основном функция uniform
будет делить на ноль, если список пуст, поэтому мне нужен способ поймать это и вернуть пустой список, прежде чем продолжить оператор do. Любой совет?