タプルとはなんだろうか? - Haskell
正直、pythonなどでも、そうなのですが、タプルについては存在価値を理解できていませ ん。 pythonでは、その価値がイミュータブルな点だと説明されているところが多いように思い ます。多分それは破壊的変更が不可能だという事だと思います。 定数という事に近いかと思います。 タプルを参照する変数が、別のタプルを参照したり、タプル同士の加算代入演算子では、 代入先のタプル自体が変更されるのではなく、二つのタプルを加算した新しいタプルを作 成し、そのタプルを参照するという動作になるようです。
さて、Haskellの場合ですが、すごいHaskellたのしく学ぼう!では、固定長だという事が 強調されているように思います。 三角形の頂点の座標を例に説明されています。 リストでは、[[x1, y1], [x2, y2, z2], [x3, y3]]が可能になってしまうが、タプルは固 定長であるために、リストには同じ要素数のタプルしか格納できず、これが安全だという 事なのだと思います。
つまり、[(x1, y1), (x2, y2, z2), (x3, y3)]というリストは許されないという事です。
しかし、pythonでは要素数の違うタプルをリストに格納できます。
私の個人的な結論としてはリストでも不可能ではない処理を、定数化、固定長化する事に よって、明示的に「このタプルは変更されませんよ」とか「このタプルの要素数は固定で すよ」という事を宣言する物であり、定数か、固定長化する事によって、より安全にコー ドを書くためのテクニックのような物だと。今は、そういう風に認識していようかと思い ます。
実は、C言語の構造体とか、オブジェクト指向言語のクラスのようなデータ型のような物 を表現する物なのかも?とも思ったのですが、どうもそれとも違うのではないか?と今は 感じています。
| 固定リンク
「Haskell」カテゴリの記事
- タプルとはなんだろうか? - Haskell(2018.07.20)
- 関数呼び出し、リスト、内包表記 -- Haskell(2018.07.08)
- ”すごいHaskellたのしく学ぼう!”でHaskellを始めてみようと思います(2018.07.05)
コメント