[erlang-questions] help with message-passing syntax

litao cheng <>
Fri Jul 4 03:55:39 CEST 2008


I'm sorry, you code has so many errors.
I think you'd better look at the book <programming erlang >, and the erlang
referance manual.

the fllow code snips is my code, but I don't know If it's your need. I hope
it's useful for you:
%%%%%%%%%%%%%%%%%%%%%%
-module(serec).
-export([start/0, get_squarer/2]).

seq(Start, End) -> seq(Start, End, []).

seq(Start, End, Acc) when Start =< End ->
   seq(Start, End-1, [End|Acc]);
seq(_, _, Acc) ->
   Acc.

squarer() ->
    receive
        {From, N} when N > 7 ->
        From ! {self(), [X*X || X <- seq(1, 7)]},
        squarer();
      {From, N} ->
          From ! {self(), [X*X || X <- seq(1, N)]},
          squarer();
      Other ->
          Other
    end.

%% @spec squarer() -> Pid
%% @doc create the squarer process
start() ->
    spawn(fun squarer/0).

%% @spec get_squarer(Pid, N) -> Result
%% @doc get the result form squarer process
get_squarer(Pid, N) when is_pid(Pid) ->
    Pid ! {self(), N},
    receive
        {Pid, Result} ->
            Result;
        Other ->
            Other
    end.
%%%%%%%%%%%%%%%%%%%

usage:
4> c(serec).
{ok,serec}
5> Pid = serec:start().
<0.49.0>
6> serec:get_squarer(Pid, 3).
[1,4,9]
7> serec:get_squarer(Pid, 4).
[1,4,9,16]
8> serec:get_squarer(Pid, 5).
[1,4,9,16,25]
9> serec:get_squarer(Pid, 10).
[1,4,9,16,25,36,49]


2008/7/3 not norwegian swede <>:

> im using:
> http://www.erlang.org/doc/reference_manual/part_frame.html
> but cant really figure it out. i didnt expect this to work but compiled
> anyway:
> 2> c("c:/Program Files/erl5.6.2/usr/serec", [{outdir, "c:/Program
> Files/erl5.6.2/usr/"}]).
> c:/Program Files/erl5.6.2/usr/serec.erl:2: function squarer/1 undefined
> c:/Program Files/erl5.6.2/usr/serec.erl:2: function squarer2/1 undefined
> c:/Program Files/erl5.6.2/usr/serec.erl:23: premature end
> error
> 3>
>
>
> obv this is just a toy program but say I have a function that squares the
> integers of a list from 1 to the send parameter.
> so i want to send a message to that function.
>
>
> -module(serec).
> -export([seq/2,squarer/1,squarer2/1]).
>
> seq(Start, End) -> seq(Start, End, []).
>
> seq(Start, End, Acc) when Start =< End ->
>    seq(Start, End-1, [End|Acc]);
> seq(_, _, Acc) ->
>    Acc.
>
> squarer(X) ->
>     receive
>     Pattern [when Pattern > 7] ->
>         [X*X || X <- [seq(1, 7]];
>     end
>
> squarer2(X) ->
>     receive
>     when X > 7 -> [X*X || X <- [seq(1, 7]];
>     end
>
> squarer(X) ! 2+6
>
>
> ------------------------------
> Låna pengar utan säkerhet.
> Sök och jämför lån hos Kelkoo.<http://www.kelkoo.se/c-100390123-lan-utan-sakerhet.html?partnerId=96915014>
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20080704/c9ca8864/attachment.html>


More information about the erlang-questions mailing list