ポインタの演算

C のポインタ演算を Haskell 風に書いてみる。

+ :: Pointer a -> Integer -> Pointer a
- :: Pointer a -> Integer -> Pointer a
- :: Pointer a -> Pointer a -> Integer
* :: Pointer a -> a
& :: a -> Pointer a
[] :: Pointer a -> Integer -> a

こんな感じ。他にもあるかな。
ポインタ同士の減算は忘れがちかも。実際あんまり使わないだろうし。std::distance くらい?