LoginSignup
2
0

More than 5 years have passed since last update.

タプルによる多重代入とパターンマッチの比較

Last updated at Posted at 2017-09-29

タプルは多重代入のための機能かどうか?
ところで、それってパターンマッチの特殊系なのでは?
と、感じたので比較

まずはPythonで。

# Python
a, b = (1,3)
print(a, b)

出力

1 3

明示的に括弧をかく。

# Python
(a, b) = (1,3)
print(a, b)

出力

1 3

Pythonではa, b(a ,b)は同じ意味になる模様。

Haskellでかいてみよう

-- ghci
(a, b) = (1, 3)
print (a,b)

出力

(1,3)

Haskellの場合はパターンマッチなので下記のようにもかける
3番目の要素が一致すれば束縛するという処理に変わっているので注意。

-- ghci
(a, b, 4) = (1, 3, 4)
print (a,b)
(1,3)

haskellの場合はパターンマッチなのでうまくいくことが確認できる。

しかし、Pythonはパターンマッチではないので、失敗する。

# python
(a, b, 4) = (1, 3, 4)
print(a,b)
SyntaxError: can't assign to literal

多重代入はタプルのパターンマッチの簡易版とみなすことができそうだ。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0