Odpověď na názor

Odpovídáte na názor ke článku Programovací jazyk pro dnešní den: Erlang.

  • 27. 9. 2006 21:18

    František Fuka (neregistrovaný)

    [3]:<pre>-module(starter).
    -export([stop/0, start/0, restart/0, bootup/1]).

    %% called after recompilation
    restart() -> test:run().

    stop() ->
    case is_pid(whereis(star­ter)) of
    true ->
    starter ! stop,
    stopped;
    _Else ->
    already_stopped
    end.

    start() ->
    case stop() of
    stopped -> io:format("Starter stopped.~n");
    already_stopped -> true
    end,
    io:format("Starting starter~n"),
    Pid = spawn_link(?MODULE, bootup,["."]),
    register(starter, Pid).

    bootup(Dir) ->
    put(dir, Dir),
    put(delay, 2000),
    put(modifs, none),
    loop().

    loop() ->
    receive
    stop ->
    exit(normal);
    recompiled ->
    ?MODULE:restart()
    after get(delay) ->
    % io:format("watching dir ~p...~n",[get(di­r)]),
    Files = filelib:wildcar­d("*.erl",get(dir)),
    Modifs = lists:map(fun(File) -> {File, filelib:last_mo­dified(File)} end,Files),
    % io:format("---~p~n",[Modifs]),
    case put(modifs, Modifs) == Modifs of
    true -> true;
    false -> recompile(Files)
    end
    end,
    loop().

    recompile(Files) ->
    Recompile = fun(File) ->
    Result = compile:file(File),
    % Result = code:load(File),
    io:format("Com­piled: ~p~n",[Result]),
    case Result of
    {ok, Module} when Module /= starter -> code:purge(Module), code:delete(Mo­dule);
    _ -> ok
    end
    end,
    lists:foreach(Re­compile, Files),
    io:format("---Recompiled~n"),
    starter ! recompiled.</pre>

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).