« Return to Thread: help with message-passing syntax

Re: help with message-passing syntax

by litaocheng :: Rate this Message:

Reply to Author | View in Thread

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 <notnorwegian@...>:
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.
_______________________________________________
erlang-questions mailing list
erlang-questions@...
http://www.erlang.org/mailman/listinfo/erlang-questions


_______________________________________________
erlang-questions mailing list
erlang-questions@...
http://www.erlang.org/mailman/listinfo/erlang-questions

 « Return to Thread: help with message-passing syntax