はじめに
- @aaabb6211 さんのfizzbuzzを噛み砕くを拝見しまして、ぜひElixirで書いてみようとおもいました。
- ↑ こちらの記事にあります「本気でそれをなしたいと思えば世界があなたに味方をしてくれる(アルケミスト)」は、この本の一節でしょうか
- アルケミスト − 夢を旅した少年
- ちなみにElixir ーー不老不死の霊薬であるこの言語の使い手のことをアルケミスト(錬金術師)と呼ばれます
- We are the Alchemists, my friends !!!
- Elixirは1.10.3-otp-22 を使いました
書いてみる
lib/awesome.ex
defmodule Awesome do
# Thanks for プログラミングElixir
def fizz_buzz(n) do
do_fizz_buzz(rem(n, 3), rem(n, 5), n)
end
defp do_fizz_buzz(0, 0, _n), do: "FizzBuzz"
defp do_fizz_buzz(0, _, _n), do: "Fizz"
defp do_fizz_buzz(_, 0, _n), do: "Buzz"
defp do_fizz_buzz(_, _, n), do: n
def sum_100, do: 1..100 |> Enum.sum()
end
- FizzBuzzはプログラミングElixir という本のおかげです
$ iex
iex> 1..15 |> Enum.map(&Awesome.fizz_buzz/1)
[1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz"]
iex> Awesome.sum_100
5050
ところで
- 最近、The Pragmatic Studioという動画でプログラミングを教えてくれるサイトがありまして、いまならEarly Access!ということで無料でPhoenix LiveViewの動画教材がみれるのでそこで学んでいます(後半部分は現時点では未公開なのですが有料になるのかも?)
- そのサイトでの環境構築のおすすめVSCode extensionとして、ElixirLSが紹介されていました
- さっそく素直にそれをいれてみたのですがなんと、うっすらと
@spec
なるものがみえるではありませんか!-
Elixir 界では常識なのかもしれませんが、ついさっき気づいた次第です
- うっすらのところを押すと、ソースコードに反映してくれます
- これを自分で書く自信はない。。。
-
Elixir 界では常識なのかもしれませんが、ついさっき気づいた次第です

Enjoy!!!