Erlang で Python の range もどきを作ってみるテスト

本当は今週は何かに使うユーザーのデータベース登録と閲覧のプログラムをやるつもりでしたが
色々とやる仕事が多かったりしたのであまり進んでいません。
代わりといっては何ですが、コンパイルの隙間とかで Erlang を弄ってました。
プログラミング言語Erlang入門 を読み進めていて、リストの内包表記のところで使うリストを

L1=[0,1,2,3,4,5,6,7,8,9].

とベタにやっていたので練習がてら Python の range っぽいものを作ってみました。

-module(test).
-export([range/1]).

range(X) when (is_list(X)) -> range(length(X));
range(X) when (is_tuple(X)) -> range(tuple_to_list(X));
range(X) when (not is_number(X)) -> range(atom_to_list(X));
range(X) when (X > 0) -> lists:append(range(X-1),[X-1]);
range(_) -> [].

本当は数字のみ受け付けるのですがなんとなくアトム、リスト、タプルはその長さを
数に変換して処理するようにしてみました。