There are two different issues here.
In fact this particular problem does not surface because of the way in which the data is structured. Sentence does its packaging by concatenating its inputs. You should know by now that this means that if an input to sentence is a list then it is the contents of the list, and not the list as a whole, which are strung together with the rest in a new list. But you will notice that in Lonely Hearts every input list which sentence receives is internally very simple. Every one is composed exclusively of words. Consequently the output of every se of the system - including the highest level se in lonely - will also be no more than a simple list of words as required.
op se pickrandom [ [please] [ ] ] <tab> pickrandom [ring call phone telephone dial]
The role of this empty list is to implement the notion of an optional constituent, to handle the fact that the request to ring a number may or equally may not be preceded by the word 'please'. As the notion is handled here, the output is generated not by ensuring that se sometimes takes two inputs and sometimes (abnormally) takes one, but instead by supposing that the first of its two inputs may be, depending on the choice pickrandom makes, either a list containing please or an empty list. Since an empty list A concatenated with a list B is identical to the list B alone, choosing an empty list as an input to sentence is effectively (even if not literally) just like choosing nothing. If you have experimented sufficiently with sentence using both words and lists, you will also realise that it would make no difference to the output provided by the expression se pickrandom [ [please] [ ] ] if the list [please] was replaced by the word "please - to give. [please [ ] ]. Concatenating an object with a word is indistinguishable in outcome from concatenating it with a single word list.
The only thing which prevents us from going even further and replacing the empty list by an empty word is that writing an empty word as a member of a list causes problems. If you try [please " ], you will find that you have indeed created a list of two items but the second is a word composed of the double quote character. And if you try [please ], in the hope that a space will do the trick, you will find you have a one word list containing please because the space is ignored.
As it happens, you can put an empty word in a list indirectly, using sentence. For example,
se "cat "
will give you a two word list and the last of the list is an empty word. (You can verify this by typing, for example, print count se "cat " .) But for most purposes the tactic is not really to be recommended because, as you will see, there is considerable scope for mistaken interpretations of the results whenever they are printed out or displayed on the screen. (It is rather like trying to distinguish the presence of nothing from the absence of anything.)
E-mail: ron.brasington@rdg.ac.uk