Вы также можете создать Pid из его трех компонентов, используя pid / 3.
1> length ([pid (0,35,0)]).
Имейте в виду, что при использованиилюбой из этих методов построения Pid работает неправильно, если вы создаете pid на узле, отличном от того, на котором он был создан.
Проблема, с которой сталкивается ваша программа, отличается.
{badarg,[{erlang, length, [<0.46.0>]}, {barber1, waitRoom, 2}]}
При вызове erlang: length / 1 возникла ошибка.Третий элемент {erlang, length, [<0.46.0>]} - это список аргументов, передаваемых erlang: length.Таким образом, это эквивалентно:
1> erlang: длина (pid (0,46,0)).
, где вы предполагали:
1> erlang: длина ([pid (0,46,0)]).
(досадно, оболочка erlang теперь скрывает от вас внутреннее представление ошибок erlang. Заменив вышеуказанную ошибку на:
** ошибка исключения:неверный аргумент в функции length / 1, называемый длиной (<0.35.0>)
, который гораздо проще понять, но менее полезен, поскольку он мешает усвоить необходимый навык интерпретации ошибок эрланга самостоятельно.)