librelist archives

« back to archive

Pregunta Basica

Pregunta Basica

From:
Angel Java Lopez
Date:
2014-02-03 @ 12:55
Hola gente!

Tal vez tendria que hacer un experimento, pero aprovecho para preguntar por
aca, me parece mas interesante.

Ayer implemente en mi Erlang de entrecasa, el receive. Me queda una duda.
Si fuera

loop() ->
    X = 1.
    receive
        {X,Y} -> .....;
        ... ->... '


el primer match dice:
- Viene un tuple, con dos terminos, X, Y
o
- Viene un tuple, con dos terminos, el primero es 1, y el segundo es Y

Como es? X es libre? o queda ligada a 1?

Para mi, el receive es como que implementa un

fun(msg) ->....

del estilo:

fun({X,Y}) -> .... ; (...) -> .... end

donde X no queda ligada a 1. Es asi?

Si no quedo claro, pregunten que trato de ponerlo mas claro.

Nos leemos!

Angel "Java" Lopez
@ajlopez

Re: [erlar] Pregunta Basica

From:
Hernando Gisinger
Date:
2014-02-03 @ 13:10
Hola Angel,

X es igual a 1 y la clausula solo cumple para tuplas de dos elememtos donde
el primero es 1.

Esto permite hacer cosas como este ejemplo del libro "Erlang Programming"
donde se filtran las respuestas de un servidor usando una referencia:

call(Message) ->
   Ref = make_ref(),
   frequency ! {request, {Ref, self()}, Message},
   receive
      {reply, Ref, Reply} -> Reply
   end.

Saludos!!!


El 3 de febrero de 2014, 9:55, Angel Java Lopez <ajlopez2000@gmail.com>escribió:

> Hola gente!
>
> Tal vez tendria que hacer un experimento, pero aprovecho para preguntar
> por aca, me parece mas interesante.
>
> Ayer implemente en mi Erlang de entrecasa, el receive. Me queda una duda.
> Si fuera
>
> loop() ->
>     X = 1.
>     receive
>         {X,Y} -> .....;
>         ... ->... '
>
>
> el primer match dice:
> - Viene un tuple, con dos terminos, X, Y
> o
> - Viene un tuple, con dos terminos, el primero es 1, y el segundo es Y
>
> Como es? X es libre? o queda ligada a 1?
>
> Para mi, el receive es como que implementa un
>
> fun(msg) ->....
>
> del estilo:
>
> fun({X,Y}) -> .... ; (...) -> .... end
>
> donde X no queda ligada a 1. Es asi?
>
> Si no quedo claro, pregunten que trato de ponerlo mas claro.
>
> Nos leemos!
>
> Angel "Java" Lopez
> @ajlopez
>
>

Re: [erlar] Pregunta Basica

From:
Angel Java Lopez
Date:
2014-02-03 @ 13:16
Ah!

Gracias!

Bien, ahi veo la luz. Si, habia pensado que X estaba ligada si aparecia a
la derecha de ->, pero no vi que tambien a la izquierda hay que tratar de
ligarla antes de comparar con el mensaje que viene.

Bien, a escribir test que falle, corregirlo, y hacer que ande con esa
behavior ;-)

Nos leemos!

Angel "Java" Lopez
@ajlopez



2014-02-03 Hernando Gisinger <hgisinger@gmail.com>:

> Hola Angel,
>
> X es igual a 1 y la clausula solo cumple para tuplas de dos elememtos
> donde el primero es 1.
>
> Esto permite hacer cosas como este ejemplo del libro "Erlang Programming"
> donde se filtran las respuestas de un servidor usando una referencia:
>
> call(Message) ->
>    Ref = make_ref(),
>    frequency ! {request, {Ref, self()}, Message},
>    receive
>       {reply, Ref, Reply} -> Reply
>    end.
>
> Saludos!!!
>
>
> El 3 de febrero de 2014, 9:55, Angel Java Lopez <ajlopez2000@gmail.com>escribió:
>
> Hola gente!
>>
>> Tal vez tendria que hacer un experimento, pero aprovecho para preguntar
>> por aca, me parece mas interesante.
>>
>> Ayer implemente en mi Erlang de entrecasa, el receive. Me queda una duda.
>> Si fuera
>>
>> loop() ->
>>     X = 1.
>>     receive
>>         {X,Y} -> .....;
>>         ... ->... '
>>
>>
>> el primer match dice:
>> - Viene un tuple, con dos terminos, X, Y
>> o
>> - Viene un tuple, con dos terminos, el primero es 1, y el segundo es Y
>>
>> Como es? X es libre? o queda ligada a 1?
>>
>>  Para mi, el receive es como que implementa un
>>
>> fun(msg) ->....
>>
>> del estilo:
>>
>> fun({X,Y}) -> .... ; (...) -> .... end
>>
>> donde X no queda ligada a 1. Es asi?
>>
>> Si no quedo claro, pregunten que trato de ponerlo mas claro.
>>
>> Nos leemos!
>>
>> Angel "Java" Lopez
>> @ajlopez
>>
>>
>