movesToStringInner (move:moves) expression =
    let
        (Move mX mY mT) = move
        pos = coordsToPos (mX, mY)
        (h:t) = mT
        result = replaceCharAtPos pos h expression
    in
        movesToStringInner moves result
movesToStringInner (move:moves) expression =
    let
        (Move mX mY mT) = move
        pos = coordsToPos (mX, mY)
        (h:t) = mT
        result = replaceCharAtPos pos h expression
    in
        movesToStringInner moves result
movesToStringInner (move:moves) expression =
    let
        (Move mX mY mT) = move
        pos = coordsToPos (mX, mY)
        (h:t) = mT
        result = replaceCharAtPos pos h expression
    in
        movesToStringInner moves result