Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Erlangで湯婆婆を実装してみる

はじめに

0. 準備

  • まずはErlangをインストールしましょう
  • 私はasdfを使ってインストールしました
  • 手前味噌な記事ですがインストールなどをご参照ください

1. プログラムを書く

yubaba.erl
-module(yubaba).
-export([main/0]).

main() ->
    InName = io:get_line("契約書だよ。そこに名前を書きな。\n"),
    Name = string:trim(InName),
    io:format("フン。~tsというのかい。贅沢な名だねぇ。\n", [Name]),
    NewName = lists:nth(rand:uniform(length(Name)), Name),
    io:format("今からお前の名前は~tsだ。いいかい、~tsだよ。分かったら返事をするんだ、~ts!!\n", [[NewName], [NewName], [NewName]]).

  • Elixirに慣れている方であれば、雰囲気で感じ取れるのではないでしょうか

2. 実行

  • erlコマンドを使います

名前を入力する

$ erl
Erlang/OTP 23 [erts-11.0.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Eshell V11.0.1  (abort with ^G)
1> c('yubaba').
{ok,yubaba}
2> yubaba:main().
契約書だよ。そこに名前を書きな。
山田太郎
フン。山田太郎というのかい。贅沢な名だねぇ。
今からお前の名前は太だ。いいかい、太だよ。分かったら返事をするんだ、太!!
ok
3> halt().
  • :tada::tada::tada:

名前を入力しない

$ erl
Erlang/OTP 23 [erts-11.0.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]

Eshell V11.0.1  (abort with ^G)
1> c('yubaba').
{ok,yubaba}
2> yubaba:main().
契約書だよ。そこに名前を書きな。

フン。というのかい。贅沢な名だねぇ。
** exception error: no function clause matching rand:uniform_s(0,
                                                               {#{bits => 58,jump => #Fun<rand.3.47293030>,
                                                                  next => #Fun<rand.0.47293030>,type => exsss,
                                                                  uniform => #Fun<rand.1.47293030>,
                                                                  uniform_n => #Fun<rand.2.47293030>},
                                                                [114110547653821498|245986615844275301]}) (rand.erl, line 326)
     in function  rand:uniform/1 (rand.erl, line 299)
     in call from yubaba:main/0 (yubaba.erl, line 8)
3> halt().
  • 何も入力しない場合にエラーになってしまう件は本家と同じくです :thumbsup:

Wrapping Up :lgtm: :qiita-fabicon: :lgtm:

  • Elixirを書いているときに、いつもお世話になっています!
  • とにかくErlangで書いてみました
  • 感覚的なものですが、硬派という言葉がぴったりの印象を持ちました
    • を感じさせてくれる言語です
  • Enjoy Erlang !!! :rocket::rocket::rocket:

  1. Elixirの文法といいますか書き味は、Rubyによく似ています 

  2. すみません、オリジナルがどこにあるのかわかっていません 

fukuokaex
エンジニア/企業向けにElixirプロダクト開発・SI案件開発を支援する福岡のコミュニティ
https://fukuokaex.fun/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away