What is the purpose of the "offset" parameter in GHC.Prim's ...OfAddr# functions?
As stated in the documentation this parameter can be used to specify offset in number of elements or bytes when accessing memory at given addres. But since we have address arithmetic (plusAddr# and others), it's always possible to provide an exact address.
Does using of offset have any advantages or disadvantages over calculating address directly? I.e. is there any difference between readInt32OffAddr# addr# 1 ... and readInt32OffAddr# (plusAddr# addr# 4) 0 ...?
If there is no difference, why this parameter exists at all? Just legacy or is there any reason to use it? What is the recomended approach to use ...OfAddr# if any?