Concurrent Clean, Haskell, OCaml: リスト,配列の操作演算子の比較
cons | 連結 | n番目の 要素 |
最初の 要素 |
残りの リスト |
n番目の要素 の更新 |
スライス | |
---|---|---|---|---|---|---|---|
Clean list | [a:aa] | aa ++ bb | aa !! n | hd aa | tl aa | updateAt n elm aa | aa % (i,j) |
Clean array | - | aa +++ bb (文字列のみ) |
aa.[n] | aa.[0] | - | aa := (n,elm) (文字列のみ) |
aa % (i,j) (文字列のみ) |
Haskell list | a:aa | aa ++ bb | aa !! n | head aa | tail aa | - | - |
OCaml list | a::aa | aa @ bb | nth aa n | hd aa | tl aa | - | - |
OCaml array | - | append aa bb | aa.(n) | aa.(0) | - | aa.(n) <- elm | sub aa i len |
平文に半角の[]を書くにはどうすればいいんだろう?(数値文字参照を使うのは、はてなの編集画面の不具合のため不可)
OCamlの @ って、一瞬、n番目の要素を取り出す操作かと思った。
ところで、リストや配列の aa !! n や aa := (n,elm) は、同じ演算子をシンボルテーブルに使って、dict !! key や dict := (key,val) とできると統一感があるなとか思った。そういう方向でCleanの型クラスをデザインしてみようかと思ったけれど、うまくできなかった。残念。