4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Qiitaの以下の記事を見てElixirという言語を知り、気になったのでAzure VM上でElixirのコーディング環境を整えてみました。最後に簡単なプログラムも書いてみます。

Elixirとは

  • 拡張しやすくメンテナンスしやすい関数型言語
  • パイプライン、パターンマッチングなどの強力な記法!
  • 強い動的型付け言語
  • Erlang VM上で動作する
  • 2012年にRuby on RailsのチームメンバーであるJosé Valimによって開発された

Elixirのコーディング環境を整える

Dockerのインストール(Ubuntu 18.04)

Dockerってほんと便利だよね!
Elixir公式のdockerイメージ

私の記事を参照してDockerをインストールする。

Elixirイメージの実行

Dockerがインストールされたあなたは、以下のコマンドを打つだけ!

docker run -it --rm elixir

iexという対話シェルが起動します。

Elixirの文法

iex(1)> 2+3

5

iex(2)> 2+3==5

true

iex(3)> 0x1f

31

上記のようにpythonのjupyter Notebookのような使い心地。

  • やめたいときはCtrl+Cを2回押す
  • Enterを押していくと数行にわたって入力できる

早速FizzBuzzでも書いてみよう!

FizzBuzz.exs
#! /usr/bin/env elixir

defmodule FizzBuzz do
  def run(limit) do
    print(1, limit)
  end

  defp print(n, limit) when n == limit do
    cond do
      rem(n, 15) == 0 -> IO.puts "#{n}: FizzBuzz"
      rem(n, 5)  == 0 -> IO.puts "#{n}: Fizz"
      rem(n, 3)  == 0 -> IO.puts "#{n}: Buzz"
      true            -> nil
    end

  end

  defp print(n, limit) do
    print(n, n)
    print(n + 1, limit)
  end

end

input = 10

FizzBuzz.run(input);

# elixir ./fizzbazz.exs で実行
# ----
# 3: Buzz
# 5: Fizz
# 6: Buzz
# 9: Buzz
# 10: Fizz

ちなみに、この記事で紹介したLispでFizzBuzzを書くと以下のような感じ。

FizzBuzz.lisp
(defun fizzbuzz (x)
  (cond
   ((zerop (mod x 15)) "Fizzbuzz")
   ((zerop (mod x 3))  "Fizz")
   ((zerop (mod x 5))  "Buzz")
   (t x)))

(defun fizzbuzz-solver (s e)
  (unless (> s e)
    (print (fizzbuzz s))
    (fizzbuzz-solver (1+ s) e)))

(fizzbuzz-solver 1 100)

どちらの言語も色があっていいね!

fileにコードを書いて実行する

fileに記載しなくてもiexモードでもdoやendを賢く認識してくれるので、複数行にわたるコーディングは可能。空白もいらない。

iexモードではタブ補完もいい感じにきく。

elixir sample.exs

コンソール出力

IO.puts "Hello World!"

繰り返し

forやwhileはない!再帰で書くのみ!

もっと学びたい方は

Elixir School
https://elixirschool.com/ja

4
1
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?