defmodule GCD do def gcd(x, 0), do: x def gcd(x, y), do: gcd(y, rem(x, y)) end
iex(3)> c "practice_6_5.exs" [GCD] iex(4)> GCD.gcd(45, 60) 15
takatoh's blog – Learning programming languages.
defmodule GCD do def gcd(x, 0), do: x def gcd(x, y), do: gcd(y, rem(x, y)) end
iex(3)> c "practice_6_5.exs" [GCD] iex(4)> GCD.gcd(45, 60) 15
defmodule Sum do def sum(1), do: 1 def sum(n), do: n + sum(n - 1) end
^o^ > iex Eshell V8.0 (abort with ^G) Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> c "practice_6_4.exs" [Sum] iex(2)> Sum.sum(10) 55
まずは、本の説明に出てきた Time
モジュールに triple
関数を追加。
defmodule Times do def doubles(n) do n * 2 end def triple(n) do n * 3 end end
そしてこれを2つのやり方で実行。1つは iex
の引数として読み込んで実行する。
^o^ > iex practice_6_1.exs Eshell V8.0 (abort with ^G) Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> Times.triple(2) 6
もう1つのやり方は、iex
の中で c
コマンドを使ってファイルをコンパイルして読み込む。
^o^ > iex Eshell V8.0 (abort with ^G) Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> c "practice_6_1.exs" [Times] iex(2)> Times.triple(2) 6
こっちのやり方だと、モジュールをコンパイルした Elixir.Times.beam ファイルができるんだな。
最後に、Time モジュールに quadruple 関数を追加。
defmodule Times do def doubles(n) do n * 2 end def triple(n) do n * 3 end def quadruple(n) do doubles(n) * doubles(n) end end
実行してみる。
^o^ > iex practice_6_3.exs Eshell V8.0 (abort with ^G) Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> Times.quadruple(2) 16