|> Kernel.==(0) |> if(do: "Yes", else: "No")   Elixir is beautiful

# はじめに
- [Elixir](https://elixir-lang.org/)楽しんでいますか :bangbang::bangbang::bangbang:
- 今日は[Pipe operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) の話をするですよ
    - `|>`のことです
    - [プログラミングElixir](https://www.ohmsha.co.jp/book/9784274226373/)では、**パイプ演算子**と訳されています
    - **パイプライン演算子**と呼んでいる人もいますし、私もそう言っていることあります
    - で、**私は**文字で書くときは原文のまま[Pipe operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2)と書くことにしています
        - **私は**そうしていますとだけ言っておりまして、どれが良いとか悪いとかは言っていません
- @zacky1972 先生の「[Elixirも色々な書き方があるんだけど，基本初心者からベテランまでパイプライン演算子で押し通す](https://qiita.com/zacky1972/items/0c2869f9f39f7bb917a5#comment-8ee72859e27dbd8af53a)」がまさにその通り:bangbang:、端的に表現してくださった:bangbang:とおもっておりまして、[Elixir](https://elixir-lang.org/)に魅せられたもの達の共通項 **です**

# https://atcoder.jp/contests/abc188/tasks/abc188_b
- [あんちぽ](https://qiita.com/kentaro)さんの以下のツイートをみておもしろそうだったのでやってみました
    - [Elixirで以下のコードを書いたらTLEした。TLEしたコード: https://atcoder.jp/contests/abc188/submissions/19416959 ええー！と思ってこう書き直したらACできた。ACしたコード: https://atcoder.jp/contests/abc188/submissions/19417262 最初のやつでTLEするの、マジで〜。気をつけないと、と思いました。 ](https://twitter.com/kentaro/status/1349358638939271171)
- 私はあんまりオーダー記法とか適当にしかわかっていなくて、:book: [問題解決力を鍛える!アルゴリズムとデータ構造](https://www.amazon.co.jp/dp/4065128447)で学びなおしているわけですが、[AtCoder](https://atcoder.jp/)の[AtCoder Beginner Contest](https://atcoder.jp/contests/abc189)のA, B, C問題くらいまでは`|>`で気持ちよくかけるのですよ
- 問題文はリンク先をご参照ください
- あ、あと[AtCoder](https://atcoder.jp/)ってなにさ？　って方や[Elixir](https://elixir-lang.org/)で[AtCoder](https://atcoder.jp/)をやるときのノウハウは以下にまとめています
    - [AtCoderをElixirでやってみる](https://zenn.dev/torifukukaiou/articles/ac84c87736ceebf4da01)

# [私の回答](https://atcoder.jp/contests/abc188/submissions/19423057)
- 問題文はリンク先をご参照ください
    - https://atcoder.jp/contests/abc188/tasks/abc188_b
- 計算結果が`0`のときは`"Yes"`、それ以外のときは`"No"`を出力しなさいというような問題です
- こういう問題のときには、私は、`... |> Kernel.==(0) |> if(do: "Yes", else: "No")`と書くことにしています

```elixir
defmodule Main do
  def main do
    IO.read(:line)
    list_a = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
    list_b = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
 
    Enum.zip(list_a, list_b)
    |> Enum.reduce(0, fn {a, b}, acc ->
      acc + a * b
    end)
    |> Kernel.==(0)
    |> if(do: "Yes", else: "No")
    |> IO.puts()
  end
end
```

- [Kernel.==/2](https://hexdocs.pm/elixir/Kernel.html#!==/2)だって、[if/2](https://hexdocs.pm/elixir/Kernel.html#if/2)だって、[Pipe operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) `|>`でつなげちゃうんです :rocket::rocket::rocket: 
- だからどうした？　と言われると説明はできないのですが、これをみて私は<font color="purple">$\huge{美しい}$</font>
- とおもうわけです
    - 「だからどうした？」　と言われたとき、私は自信がもてないことだと自分が言っていることが変なのかなあと尻込みしちゃうわけですけど、この[Pipe operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) `|>`に関しては理由を言えと言われたら、<font color="purple">$\huge{美しいとおもうから美しいのです！}$</font>
    - と堂々と言い張ります
    - (えっ！？　なんで伝わんないの？　て)(心の声)
    - 好きとか美しいとかおもうものにいちいち理由なんて必要ですか？　私は美しいとおもっているのです
- (またまたたびたびお名前を出して申し訳ありませんが、)[あんちぽ](https://qiita.com/kentaro)さんは[おしゃれ](https://twitter.com/kentaro/status/1349705246537224192)と感じるわけです

# Wrapping Up 🎍🎍🎍🎍🎍
- みんな、大好き[Pipe operator](https://hexdocs.pm/elixir/Kernel.html#%7C%3E/2) `|>`
    - ここの`みんな`は[Elixir](https://elixir-lang.org/)が好きな人たちのことでしょう
- みなさんもお好きな言語でプログラミングを楽しみましょう :rocket::rocket::rocket:
- Enjoy [Elixir](https://elixir-lang.org/) :bangbang::bangbang::bangbang: