/* generation of random sentences from an rtn */ /* use with random and drinks */ /*top level*/ go :- generate(sentence,start), /* generate a sentence from start */ nl,nl. /* and print 2 new lines */ generate(RTN,finish). /* if at finish then do nothing */ generate(RTN,Node):- /* to generate RTN from node */ arc(RTN,Node,Arcs), /* find all arcs leaving node */ random_pick(Arcs,[NewNode,Label,Type]), /* pick one at random*/ traverse(Label,Type), /* traverse it */ generate(RTN,NewNode). /* and carry on from the other end */ traverse(Word,word):- /* to traverse a word arc */ write(Word), tab(1). /* write word and a space */ traverse(SubRTN,rtn) :- /*to traverse an rtn arc */ generate(SubRTN,start). /* generate subrtn from start */