The function call syntax of MPI (the MUCK one) is actually not too dissimilar in its structure from that of Lisp or Scheme. However, since bare strings in MPI evaluate to themselves (i.e. they do not need to be quoted to be literals) the overall effect is that of Scheme crossed with, say, MUSH's attribute language.

Here's Space Butler's example reformatted. Note that because the original contains string expressions that have been split up here to illustrate the Lispishness going on, the following will probably not run (well):

{with:  awake,,
  {foreach:  player, {contents:here,player},
    {if:  {awake:{&player}},
          {set:awake,{mklist:{&awake},{name:{&player}}}}
    }
  },
  {color:  {nl}~&160
    {commas:  {&awake},
          ~&R~&170 and ~&R~&160,player,
      {if:  {ge:  {idle:*{&player}},60},
            {&player}~&R~&040
              (idle 
                {div:  {idle:*{&player}},60}
              m
                {mod:  {idle:*{&player}},60}
              s)
              ~&R~&160,
                {&player}
      }
    }
  }
   {color:~&R~&170
    {if:  {eq:{count:{&awake}},1},
      is ,
      are 
    }
    awake here.~&R
  }
} 
As you can see, the function call syntax resembles Lisp, but uses curly brackets instead of parentheses, delimits the function name from the arguments with a colon, and delimits arguments themselves with commas. As a result, MPI's function calls do not share syntax with lists, as Lisp's do: MPI lists are delimited by carriage return. Nevertheless, MPI is certainly much more of a functional language than are most MU* languages.