24 lines
438 B
Haskell
24 lines
438 B
Haskell
|
module Tool.Array (
|
||
|
Array
|
||
|
, (!)
|
||
|
, clear
|
||
|
, malloc
|
||
|
) where
|
||
|
|
||
|
import Data.Vector (Vector, (!?), (//))
|
||
|
import qualified Data.Vector as Vector (replicate)
|
||
|
|
||
|
type Array a = Vector (Maybe a)
|
||
|
|
||
|
(!) :: Array a -> Int -> Maybe a
|
||
|
t ! k =
|
||
|
case t !? k of
|
||
|
Nothing -> Nothing
|
||
|
Just a -> a
|
||
|
|
||
|
clear :: Array a -> Int -> Array a
|
||
|
clear t k = t // [(k, Nothing)]
|
||
|
|
||
|
malloc :: Int -> Array a
|
||
|
malloc size = Vector.replicate size Nothing
|