https://elixir-lang.org/getting-started/pattern-matching.html#the-pin-operator
左辺の変数手前につけることで、[[パターンマッチ (Elixir)|パターンマッチ]]の際に値が変数に再代入されるのを防ぐ[[Elixir]]の演算子。
[[ピン演算子]]を使わないと、以下のコードは`x`に10を代入するコードになる。
```elixir
> x = 1
1
> [x, 2, 3] = [10, 2, 3]
[10, 2, 3]
> x
10
```
[[ピン演算子]]を使うと、以下のコードは**左辺の変数値を展開したうえで、それがマッチするかを確認するコード**になる。つまり `[1, 2, 3] = [10, 2, 3]`の[[マッチ演算子 (Elixir)|マッチ演算子]]と同じである。
```elixir
> x = 1
1
> [^x, 2, 3] = [10, 2, 3]
** (MatchError) no match of right hand side value: [10, 2, 3]
```