Functional programming 在这个判断函数中,接收语句fullfil的目的是什么?

Functional programming 在这个判断函数中,接收语句fullfil的目的是什么?,functional-programming,erlang,Functional Programming,Erlang,我最近开始学习Erlang 在本章中,我理解了程序的功能和执行方式,但我无法理解在judge函数中接收语句的目的是什么,何时以及如何调用它 据我所知,若元组模式与Pid和atom匹配,它将返回一个atom。我将如何发送消息以接收内部法官 start_critic() -> spawn(?MODULE, critic, []). judge(Pid, Band, Album) -> Pid ! {self(), {Band, Album}}, receive

我最近开始学习Erlang 在本章中,我理解了程序的功能和执行方式,但我无法理解在judge函数中接收语句的目的是什么,何时以及如何调用它

据我所知,若元组模式与Pid和atom匹配,它将返回一个atom。我将如何发送消息以接收内部法官

  start_critic() ->
  spawn(?MODULE, critic, []).

judge(Pid, Band, Album) ->
  Pid ! {self(), {Band, Album}},
  receive 
    {Pid, Criticism} -> Criticism
  after 2000 ->
    timeout
  end.

critic() ->
  receive
    {From, {"Rage Against the Turing Machine", "Unit Testify"}} ->
      From ! {self(), "They are great!"};
    {From, {"System of a Downtime", "Memoize"}} ->
      From ! {self(), "They're not Johnny Crash but they're good."};
    {From, {"Johnny Crash", "The Token Ring of Fire"}} ->
      From ! {self(), "Simply incredible."};
    {From, {_Band, _Album}} ->
      From ! {self(), "They are terrible!"}
  end,
  critic().
输出

c(linkmon).
{ok,linkmon}

Critic = linkmon:start_critic().
<0.109.0>

linkmon:judge(Critic, "Genesis", "The Lambda Lies Down on Broadway").
"They are terrible!"

linkmon:judge(Critic, "Genesis", "A trick of the Tail Recursion").
"They are terrible!"

linkmon:judge(Critic, "Johnny Crash", "The Token Ring of Fire").
"Simply incredible."
c(linkmon)。
{好的,linkmon}
Critic=linkmon:start\u Critic()。
林克蒙:法官(评论家,“创世记”,“兰姆达躺在百老汇”)。
“他们太可怕了!”
林克蒙:法官(评论家,“创世记”,“尾部递归的技巧”)。
“他们太可怕了!”
林克蒙:法官(评论家,“约翰尼·克拉什”,“象征性的火环”)。
“简直难以置信。”

Pid向评论家发送消息。然后,批评家将通过来自的
之一发送响应行。
judge
函数中的
receive
等待所述响应,然后简单地返回响应中包含的字符串。

非常感谢。我现在觉得自己很愚蠢,我怎么会错过这个呢