[erlang-questions] Beginner question

Pietro <>
Mon Mar 14 23:53:32 CET 2016


Hi all,

I have recently started to implement a small academic project in Erlang
and I have bumped into a problem which seems to show to myself I haven't
grasped something important about the technology itself.

That's my code :

-module(test).
-export([start/0, interact/2]).


start() ->
    spawn (fun() -> startloop() end).
    

interact(Pid, Request) ->
    Pid ! {self(), Request},
    receive 
	{Pid, Response} -> Response
    end.


startloop() ->
    TableId = ets:new(dictionary, [set]),
    loop(TableId).

loop(Table) ->
    receive
	{From, {insert, key, value}} ->
	    From ! ets:insert(Table, {key, value}),
	    loop(Table);
	{From, {lookup, key}} ->
	    From ! ets:lookup(Table, key),
	    loop(Table);
	Any ->
	    Any
		
    end.


The problem happens when I try to interact with the server I start using
the command:

Pid = test:start().

Then I run :

test:interact(Pid, {insert, testkey, testvalue}).

My ershell at this point hangs and nothing happens ... what is happening
? Please feel free to redirect me to a more appropriate newsgroup if my
question is not appropriate or if there is a better one.

Thanks in advance.

Pietro.



More information about the erlang-questions mailing list