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 くらい?