豊福です。

nobsunさん
> 残念ながら、Haskell 98 の仕様には、ハッシュテーブルのようなライブラリは
> ありません。GHC のライブラリには、Data.HashTable というのがあります。
> IO ですが、効率はいいでしょう。

  今回は Haskell 98 に沿ったものにしますが Data.HashTable も
調べてみます。

> 関数的にやるなら
  ...
> なんていうのはどうでしょう。

  恥ずかしながらやっと理解できました。例えば

    addEntryList :: (Eq k, Eq v) => Table k v -> [(k,v)] -> Table k v
    addEntryList tbl [] = tbl
    addEntryList tbl (x:xs) = addEntry (addEntryList tbl xs) x

    myTbl :: Table Int Int
    myTbl = addEntryList (\_ -> []) [(1,1), (2,2), (1,11)]

    Main> lookUp myTbl 1

みたいに使えばいいんですね。
  リストのような今まで慣れ親しんだものに頼りがちでなかなか
関数的な発想ができません。でも効率はどうなんでしょう。

> Prelude のものは、追加はリストに加えるだけです。しかし、
> 削除はしたいですよね。

  あー、なるほど、削除しなくても lookup には影響ないのか。
でもやっぱり削除したい。
---
                        豊福
                        nobu_toyofuku / nifty.com


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/