Это не украшение, а псевдоним. Это позволяет вам иметь свой торт и есть его. Вы можете использовать шаблон, который соответствует обычному, и иметь переменную, которая связана с соответствующей частью термина. Так что в
foo([a,b,c|_]=List) -> ... .
сопоставит список с первыми 3 элементами a
, b
и c
и свяжет List
со всем списком. Он может быть использован в любом месте шаблона и полезен, поскольку он может спасти вас от перестройки термина. Использование его в качестве формы комментария не проблема, но я, честно говоря, не вижу в этом смысла, он просто загромождает голову. Я бы написал твой пример как
%% get_next_state(SPid, NextPort) -> ... .
get_next_state(undefined, undefined) ->
stop;