movesToValuesList (h:t) values =
    let
        (Move x y v) = h
        (xKey, xVal) = (stringToValue "x", intToValue x)
        (yKey, yVal) = (stringToValue "y", intToValue y)
        (vKey, vVal) = (stringToValue "v", stringToValue v)
        valuesMap = [(xKey, xVal), (yKey, yVal), (vKey, vVal)]
        map = valuesMapToValue valuesMap
    in
        movesToValuesList t (values ++ [map])
movesToValuesList (h:t) values =
    let
        (Move x y v) = h
        (xKey, xVal) = (stringToValue "x", intToValue x)
        (yKey, yVal) = (stringToValue "y", intToValue y)
        (vKey, vVal) = (stringToValue "v", stringToValue v)
        valuesMap = [(xKey, xVal), (yKey, yVal), (vKey, vVal)]
        map = valuesMapToValue valuesMap
    in
        movesToValuesList t (values ++ [map])
movesToValuesList (h:t) values =
    let
        (Move x y v) = h
        (xKey, xVal) = (stringToValue "x", intToValue x)
        (yKey, yVal) = (stringToValue "y", intToValue y)
        (vKey, vVal) = (stringToValue "v", stringToValue v)
        valuesMap = [(xKey, xVal), (yKey, yVal), (vKey, vVal)]
        map = valuesMapToValue valuesMap
    in
        movesToValuesList t (values ++ [map])