作ってみました。
1.
----------
-module(count_num).
-export([count_num1/0, count_num2/0]).
%% 偶数・奇数・負値のカウント(listsモジュール使用版)
count_num1() ->
Number_List = [2,-8,5,-4,6,5,7,-3,-9,-1],
{Even_List, Odd_List} = lists:partition(fun (X) -> X rem 2 == 0 end, Number_List),
Negative_List = lists:filter(fun (X) -> X < 0 end, Number_List),
io:format("# of even : ~b~n", [length(Even_List)]),
io:format("# of odd : ~b~n", [length(Odd_List)]),
io:format("# of negative : ~b~n", [length(Negative_List)]).
%% 偶数・奇数・負値のカウント(listsモジュール未使用版)
count_num2() ->
Number_List = [2,-8,5,-4,6,5,7,-3,-9,-1],
io:format("# of even : ~b~n", [count(Number_List, fun (X) -> X rem 2 == 0 end)]),
io:format("# of odd : ~b~n", [count(Number_List, fun (X) -> X rem 2 /= 0 end)]),
io:format("# of negative : ~b~n", [count(Number_List, fun (X) -> X < 0 end)]).
%% 個数計算
count(L, F) ->
count(L, F, 0).
%% 個数計算実装
count([], _F, Count) ->
Count;
count([H | T], F, Count) ->
case F(H) of
true ->
count(T, F, Count + 1);
false ->
count(T, F, Count)
end.
----------
2.
----------
-module(fact).
-export([main/0]).
%% main関数
main() ->
Value = input_non_negative_integer(),
io:format("~b! = ~b.~n", [Value, fact(Value)]).
%% 非負整数値入力
input_non_negative_integer() ->
case io:fread('input non-negative integer>', "~d") of
{ok, [Value]} when Value > 0 ->
Value;
_Others ->
input_non_negative_integer()
end.
%% 階乗計算
fact(Value) ->
fact(Value, 1).
%% 階乗計算実装
%% とりあえずモジュール内で呼ばれるのみなので、負値ガード等は行っていない
fact(0, Result) ->
Result;
fact(Value, Result) ->
fact(Value - 1, Result * Value).
----------
インデントは全角スペースで行っているので、コピペ後タブに置換してください。
以下の環境で動作確認済です。
OS : Windows Vista Home Premium SP2
Erlang OTP: R14B01
……言語指定が無かったのですが、その他(プログラミング)カテゴリへの質問ですのでErlang(参考URL参照)だと推察しました。想定の言語と違っていたならお詫びいたします。