• [^] # Re: Erlang

    Posté par (site web personnel) . En réponse à la dépêche Apprendre un langage de programmation par an. Évalué à 2.

    Un truc de ce genre, ptet ?

    -module(toto).
    -export([main/0]).

    %% Retourne {false,3}
    foo() ->
    X = 3, % Assigne
    R = case {1,2} of
    {X,_} -> true; % teste si la première projection vaut 3. Vrai si oui,
    _ -> false % Faux si non.
    end,
    {R,X}.

    %% Retourne {true,1}
    bar() ->
    case {1,2} of
    {X,_} -> X = X; % teste si la valeur est une paire, si oui, lie X et 1, puis
    % vérifie via pattern match si X = X est vrai.
    _ -> X = ohmygod % assigne ohmygod à X sinon
    end, %% Maintenant, X vaut 1, alors qu'on est sorti de la portée du CASE
    {true,X}.

    % Que retourne cette fonction?
    % quux() ->
    % X = 41,
    % X = 42.

    main() ->
    %io:format("~w, ~w, ~w~n",[foo(),bar(),quux()]).
    io:format("~w, ~w~n",[foo(),bar()]).