\def\defun#1{\def\defuntype{#1}%
\medbreak
\line\bgroup
  \hbox\bgroup
    \aftergroup\enddefun
    \vrule width .5ex \thinspace
    \vrule \enspace
    \vbox\bgroup\setbox0=\hbox{\defuntype}%
      \advance\hsize-\wd0
      \advance\hsize-1em
      \obeylines
      \parindent=0pt
      \aftergroup\egroup
      \strut
      \let\dummy=}

\def\enddefun{\hfil\defuntype\egroup\smallskip}


%\def\defprocedure{\defun{procedure}}

%\def\defessentialprocedure{\defun{\hbox{%
%  \vbox{\hbox{essential}\hbox{procedure}}}}}

