Space and time complexity of operation on lists
scaleV

scaleV is very similar to fmap, it just has different precedence in its arguments, the following definition is simpler and highlights this similarity:

scaleV = (fmap .)


Guards

While they have the same effect of conditionals, they are preferred because they are extensible and nicer to read:

addV v1 v2 = if length v1 == length v2 then Just $ zipWith (+) v1 v2 else Nothing


Becomes:

addV v1 v2 
  | length v1 == length v2 = Just $ zipWith (+) v1 v2
  | otherwise = Nothing