書き置き

何かを書き残す

elixirでFizzBuzzしてみた

Elixir面白いですよね!

といいつつ全くの初心者なので、書き方の備忘も兼ねてFizzBuzzしてみました。

GitHub - utonn/elixir-fizzbuzz: elixirでfizzbuzz

FizzBuzz1

テーマは「全部関数で」

条件分岐は関数呼び出しのguradで、ループは再帰で書きました。
if文もfor文もない世界。Javaで生きてきた自分には衝撃的だったので、まずこれです。

衝撃ではあったものの、実際書いてみるととても冗長感あふれるような。
もっとうまい書き方あるのかなー

FizzBuzz2

テーマは「Enumでループしよう」

for文が文法として存在しないelixirですが、こんな感じでループはかけちゃうわけですね。
Enumはもっと色々あると思うので、おいおいやっていきたい。
あとはcase文の書き方なんかも後で参考にしやすいところ。

FizzBuzz3

テーマは「Stream!」

ただStreamを使うだけだと2とほぼ同じになる気がしたので、ちょっと捻ったもの。遠い昔に読んだこちらが頭をよぎったのは否定しない。あまり覚えてはいなかったけど。
結局caseしてるのがちょっとなーと思いつつ、これはこれでパターンマッチの参考にはよさ気。

Streamはまだまだ弄り甲斐がありそうですね。

おまけ

何気に苦労したのが、コマンドラインから引数受け取るところ。もう型がね。
配列なのは、まぁ良いとして。文字列って怒られるから数値に変換して、そしたら返り値tupleで取り出さなきゃで。初心者にはつらかったい。

また何か思いついたら追加しようと思います。 とりあえずMacroは触らないとなー