miniMax player moves = 
        let
            availableMoves = getAvailableMoves player moves
            mapped = map (\move -> ((minPlay (oponent player) player (makeMove player move moves) (availableMoves \\ [move])), move)) availableMoves
            (score, move) = maximumBy (compare `on` fst) mapped
        in
            move
miniMax player moves = 
        let
            availableMoves = getAvailableMoves player moves
            mapped = map (\move -> ((minPlay (oponent player) player (makeMove player move moves) (availableMoves \\ [move])), move)) availableMoves
            (score, move) = maximumBy (compare `on` fst) mapped
        in
            move
miniMax player moves = 
        let
            availableMoves = getAvailableMoves player moves
            mapped = map (\move -> ((minPlay (oponent player) player (makeMove player move moves) (availableMoves \\ [move])), move)) availableMoves
            (score, move) = maximumBy (compare `on` fst) mapped
        in
            move