闘魂Elixir ーー ~c"闘魂" == '闘魂'

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>

<b><font color="red">$\huge{闘魂とは己に打ち克つこと。}$</font></b>
<b><font color="red">$\huge{そして闘いを通じて己の魂を磨いていく}$</font></b>
<b><font color="red">$\huge{ことだと思います}$</font></b>


# はじめに

[Elixir](https://elixir-lang.org/)という素敵な関数型言語の話をします。


```elixir
~c"闘魂" == '闘魂'
```

は`true`なのです。

[Elixir](https://elixir-lang.org/) 1.15.4-otp-26で`mix format`で整形をすると、`'闘魂'`が`~c"闘魂"`に置き換わります。
それでなんだこれ！？　って私はなりまして記事をしたためておるわけです。


# '闘魂'

`'`でくくられたデータは、[Elixir](https://elixir-lang.org/)では[Charlists](https://hexdocs.pm/elixir/1.15.4/List.html#module-charlists)と呼ばれるものです。
文字列とは異なります。
他のプログラミング言語では`'`でくくっても`"`でくくっても両方とも文字列として扱われることが多いと思いますが、[Elixir](https://elixir-lang.org/)はそうではありません。

文字列と[Charlists](https://hexdocs.pm/elixir/1.15.4/List.html#module-charlists)の使い分けはですねえ……

https://qiita.com/im_miolab/items/2d41b10ff005b334295d

「[Elixirで整数リストが「謎の文字」として返ってくる現象と、文字列・文字リストについて](https://qiita.com/im_miolab/items/2d41b10ff005b334295d)」の記事で紹介されている通り、「[文字リストがサポートされているのは一部のErlangモジュールがそれを必要としているからです。](https://elixirschool.com/ja/lessons/basics/strings/#:~:text=%E6%96%87%E5%AD%97%E3%83%AA%E3%82%B9%E3%83%88%E3%81%8C%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%AF%E4%B8%80%E9%83%A8%E3%81%AEErlang%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%8C%E3%81%9D%E3%82%8C%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%82%89%E3%81%A7%E3%81%99%E3%80%82)」（Elixir School）が私も実感としてそうなんだろうとおもいます。
ちなみに紹介した記事はコメントも含めて読んでみるとおもしろいです。[Charlists](https://hexdocs.pm/elixir/1.15.4/List.html#module-charlists)をもっと知りたい方はぜひご一読ください。

それで私が「[文字リストがサポートされているのは一部のErlangモジュールがそれを必要としているからです。](https://elixirschool.com/ja/lessons/basics/strings/#:~:text=%E6%96%87%E5%AD%97%E3%83%AA%E3%82%B9%E3%83%88%E3%81%8C%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%AF%E4%B8%80%E9%83%A8%E3%81%AEErlang%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%8C%E3%81%9D%E3%82%8C%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%82%89%E3%81%A7%E3%81%99%E3%80%82)」に関して話せることを続けると、たとえばIExから[Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code)を開く場合は、`:os.cmd`というErlangの関数を使うわけですが、[Charlists](https://hexdocs.pm/elixir/1.15.4/List.html#module-charlists)を指定します。

```elixir
iex> :os.cmd('code .')
```

これも動きます。

```elixir
iex> :os.cmd(~c"code .")
```

**今後この書き方を自分ですることはないとおもいます。**




# `~c`

sigilというものです。
シジルまたはシギルとカナが振られます。

`~c`のドキュメントは[ここ](https://hexdocs.pm/elixir/1.15.4/Kernel.html#sigil_c/2)にあります。

他には`~w`などなどがあります。
Elixir Schoolの[Sigils](https://elixirschool.com/ja/lessons/basics/sigils)が詳しいです。

`~c`自体はけっこう古くからあるようです。
`~c`の[ドキュメント](https://hexdocs.pm/elixir/1.15.4/Kernel.html#sigil_c/2)には`since`の記載がないので正確なことはわかりませんが、手元では1.9.4-otp-22でも使えました。

# さいごに

`~c`の話を書きました。
新しい[Elixir](https://elixir-lang.org/)（執筆時点2023-08-03, 1.15.4-otp-26）で`mix format`すると[Charlists](https://hexdocs.pm/elixir/1.15.4/List.html#module-charlists)`'闘魂'`が自動で、`~c"闘魂"`に置き換わることをお伝えしておきます。

---


**闘魂**とは、  **「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」** との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
**アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。**

---

<b><font color="red">$\huge{元氣ですかーーーーッ！！！}$</font></b>
<b><font color="red">$\huge{元氣があればなんでもできる！}$</font></b>
<b><font color="red">$\huge{１、２、３ ぁっダァー！}$</font></b>