最近erlangの勉強会に参加していて、仕事ではrubyとphp、家ではnode、趣味でerlangみたいなカオスな感じになってきている。当然erlangどころか関数型言語も触ったことなかったので、勉強会でのパフォーマンスが悪くなってきた。つまり、erlangの演習をしながらちょっと復習をしていきたい。
とりあえず、基本のfizzbuzzをerlangで書いてみた。
FizzBuzz
- module(fizzbuzz).
- export([check/1, fizzbuzz/1, loop/2]).
check(Num) when Num rem 15 =:= 0 ->
io:format("FizzBuzzz~n");
check(Num) when Num rem 3 =:= 0 ->
io:format("Fizz~n");
check(Num) when Num rem 5 =:= 0 ->
io:format("Buzz~n");
check(Num) ->
io:format("~p~n", [Num]).
fizzbuzz(Num) ->
loop(1,Num).
loop(Endnum, Endnum) ->
check(Endnum);
loop(Num, Endnum) ->
check(Num),
loop(Num+1, Endnum).
感想
ちょっとはまったところは、再帰のところだ。for文がないのでどうやって書くか試行錯誤したらこんな感じになった。慣れると結構かっこ良くかける気がしている。次は素数チェッカーを書く。