2016年6月9日木曜日

開発環境

7つの言語 7つの世界 (Bruce A. Tate (著)、まつもとゆきひろ (監訳)、田和 勝 (翻訳)、オーム社)の第6章(Erlang)、6.2(セルフスタディ1日目)を取り組んでみる。

セルフスタディ1日目.

コード(Emacs)

-module(sample).
-export([word_count/1, count_number_one_to_ten/0, success_or_error/1]).

word_count([]) ->
    0;
word_count([32|Tail]) -> word_count(Tail);
word_count(String) -> skip_char(String).

skip_char([]) ->
    1;
skip_char([32|Tail]) -> 1 + word_count(Tail);
skip_char([_|Tail]) -> skip_char(Tail).

count_number_one_to_ten() ->
    range(1, 11, 1).

range(N, N, _) ->
    [];
range(N, M, Step) -> [N|range(N + Step, M, Step)].

success_or_error({error, Message}) ->
    "error: " ++ Message;
success_or_error(success) -> "success".

入出力結果(Terminal, REPL(Read, Eval, Print, Loop))

$ erl
Eshell V7.3  (abort with ^G)
1> c(sample).
{ok,sample}
2> sample:word_count("").
0
3> sample:word_count("erl").
1
4> sample:word_count("erl erlang").
2
5> sample:word_count("  erl  erlang").
2
6> sample:word_count("erl  erlang  ").
2
7> sample:word_count(" erl  erlang ").
2
8> sample:count_number_one_to_ten().
[1,2,3,4,5,6,7,8,9,10]
9> sample:success_or_error({error, "エラー"}).
[101,114,114,111,114,58,32,227,130,168,227,131,169,227,131,
 188]
10> sample:success_or_error(success).
"success"
11> sample:success_or_error(other).
** exception error: no function clause matching 
                    sample:success_or_error(other) (sample.erl, line 21)
12> *** Terminating erlang (nonode@nohost)
$ 

0 コメント:

コメントを投稿