/var/log/messages

Jan 8, 2019 - 1 minute read - Comments - programming

Elixir を OSX に導入

入れてみます。というか brew install 一発なのかどうか。

FizzBuzz な練習問題 2

以下。

iex(1)> fizzbuzz = fn
...(1)>  {0, 0, _} -> "FizzBuzz"
...(1)>  {0, _, _} -> "Fizz"
...(1)>  {_, 0, _} -> "Buzz"
...(1)>  {_, _, a} -> a
...(1)> end
#Function<6.128620087/1 in :erl_eval.expr/5>
iex(2)> fizzbuzz.({0, 0, 1})
"FizzBuzz"
iex(3)> fizzbuzz.({0, 1, 1})
"Fizz"
iex(4)> fizzbuzz.({1, 0, 1})
"Buzz"
iex(5)> fizzbuzz.({1, 1, 1})
1

これ、面白いですね。つづいて 3 に着手。

FizzBuzz な練習問題 3

こうかな。。

iex(8)> fun3 = fn n -> fizzbuzz.({rem(n, 3), rem(n, 5), n}) end     
#Function<6.128620087/1 in :erl_eval.expr/5>

ええと、Function-3 とか Function3 とかしてて叱られてましたorz 実行してみます。

iex(9)> fun3.(10)
"Buzz"
iex(10)> fun3.(11)
11
iex(11)> fun3.(12)
"Fizz"
iex(12)> fun3.(13)
13
iex(13)> fun3.(14)
14
iex(14)> fun3.(15)
"FizzBuzz"
iex(15)> fun3.(16)
16

すごいなぁ。超強力。

手続きを戻す手続き

練習問題 4 を。関数型は慣れてます。

iex(17)> prefix = fn str1 -> fn str2 -> "#{str1} #{str2}" end end
#Function<6.128620087/1 in :erl_eval.expr/5>

で、動作確認が以下。

iex(18)> mrs = prefix.("Mrs")
#Function<6.128620087/1 in :erl_eval.expr/5>
iex(19)> mrs.("Smith")
"Mrs Smith"
iex(20)> prefix.("Elixir").("Rocks")
"Elixir Rocks"

別件対応あるので

今日はこのあたりで。

プログラミング Elixir プログラミング Elixir (2)

comments powered by Disqus