nobsun (a.k.a. やました)です。

>   Haskell で連想配列的なことをしたいのですが組み込みで適して
> いるデータ構造、関数はありませんか。

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

関数的にやるなら

import List

type Table k v = k -> [v]

lookUp :: Table k v -> k -> [v]
lookUp = ($)

addEntry, delEntry :: (Eq k, Eq v) => Table k v -> (k,v) -> Table k v

addEntry tbl (k,v) key
 = if k /= key
      then tbl key
      else v : delete v (tbl key)

delEntry tbl (k,v) key
 = delete v (tbl k)

なんていうのはどうでしょう。

>   Prelude に lookup という関数がありましたが更新に対応する
> ものがみつかりませんでした。また Array の説明に連想という語が
> 出ていて気になってます。

Prelude のものは、追加はリストに加えるだけです。しかし、
削除はしたいですよね。List モジュールに delete がありますのでこれを
使えばできることはできます。

--nobsun


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