LoginSignup
3
0

More than 5 years have passed since last update.

Elixir と Ruby のsumの比較

Last updated at Posted at 2017-07-05

まだ、関数型プログラミングの記述、特に再帰には慣れていない。
でも、再帰&パターンマッチが含まれているので理解するべき。

Ruby

sum.rb
def sum(n)
  result = 0
  (1..n).each do |n|
    result = result + n
  end
  result
end

n = 5
puts sum(n)

# => 15

Elixir

sum.exs
defmodule Sum do
  def sum(0), do: 0
  def sum(n), do: n + sum(n - 1)
end

n = 5
IO.puts(Sum.sum(n))

# => 15

または、わかりやすく書くと

sum.exs
defmodule Sum do
  def sum(0) do
    0
  end
  def sum(n) do
    n + sum(n - 1)
  end
end

n = 5
IO.puts(Sum.sum(n))

# => 15

話す時に、日本語(Ruby)⇒英語(Elixir)みたいに脳内変換しているうちは、まだまだ未熟。
日本語(Ruby)、英語(Elixir)ともにネイティブで話したいものです。

※追記

ちなみに、Elixir には標準でリストをsumする関数はEnumに存在します。

sum.exs
n = 5
IO.puts(Enum.sum(1..n))


# => 15
3
0
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
3
0