しょうがないから作ってみた
module Map where
put :: (Eq k) => [(k,v)] -> k -> v -> [(k,v)]
put nk nv = [(nk,nv)]
put ((k,v):rest) nk nv =
if (k==nk) then
(nk,nv):rest
else
(k,v):(put rest nk nv)
get :: (Eq k) => [(k,v)] -> k -> Maybe v
get k = Nothing
get ((k,v):rest) k2 =
if (k==k2) then
Just v
else
get rest k
線形サーチなのでHashを名乗ることはできず.
Map> put [] 2 "bar" [(2,"bar")] Map> put [(2,"bar")] 3 "foo" [(2,"bar"),(3,"foo")] Map> get [(2,"bar"),(3,"foo")] 2 Just "bar" Map> get [(2,"bar"),(3,"foo")] 5 Nothing Map> put [(2,"bar"),(3,"foo")] 2 "baz" [(2,"baz"),(3,"foo")] Map>