« 関数呼び出し、リスト、内包表記 -- Haskell | トップページ | ReadyBoostを設定してみた »

2018-07-20

タプルとはなんだろうか? - Haskell

正直、pythonなどでも、そうなのですが、タプルについては存在価値を理解できていませ ん。 pythonでは、その価値がイミュータブルな点だと説明されているところが多いように思い ます。多分それは破壊的変更が不可能だという事だと思います。 定数という事に近いかと思います。 タプルを参照する変数が、別のタプルを参照したり、タプル同士の加算代入演算子では、 代入先のタプル自体が変更されるのではなく、二つのタプルを加算した新しいタプルを作 成し、そのタプルを参照するという動作になるようです。

さて、Haskellの場合ですが、すごいHaskellたのしく学ぼう!では、固定長だという事が 強調されているように思います。 三角形の頂点の座標を例に説明されています。 リストでは、[[x1, y1], [x2, y2, z2], [x3, y3]]が可能になってしまうが、タプルは固 定長であるために、リストには同じ要素数のタプルしか格納できず、これが安全だという 事なのだと思います。

つまり、[(x1, y1), (x2, y2, z2), (x3, y3)]というリストは許されないという事です。

しかし、pythonでは要素数の違うタプルをリストに格納できます。

私の個人的な結論としてはリストでも不可能ではない処理を、定数化、固定長化する事に よって、明示的に「このタプルは変更されませんよ」とか「このタプルの要素数は固定で すよ」という事を宣言する物であり、定数か、固定長化する事によって、より安全にコー ドを書くためのテクニックのような物だと。今は、そういう風に認識していようかと思い ます。

実は、C言語の構造体とか、オブジェクト指向言語のクラスのようなデータ型のような物 を表現する物なのかも?とも思ったのですが、どうもそれとも違うのではないか?と今は 感じています。

|

« 関数呼び出し、リスト、内包表記 -- Haskell | トップページ | ReadyBoostを設定してみた »

Haskell」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: タプルとはなんだろうか? - Haskell:

« 関数呼び出し、リスト、内包表記 -- Haskell | トップページ | ReadyBoostを設定してみた »