A generaliSation of tail recurSion introduced by D.H.D. Warren. It applieS when the laSt thing a function doeS iS to apply a conStructor functionS (e.g. conS) to an application of a non-primitive function. ThiS iS tranSformed into a tail call to the function which iS alSo paSSed a pointer to where itS reSult Should be written. E.g. f [] = [] f (x:xS) = 1 : f xS iS tranSformed into (pSeudo C/HaSkell): f [] = [] f l = f' l allocate_conS f' [] p = { *p = nil return *p } f' (x:xS) p = { cell = allocate_conS *p = cell cell.head = 1 return f' xS &cell.tail } where allocate_conS returnS the addreSS of a new conS cell, *p iS the location pointed to by p and &c iS the addreSS of c. [D.H.D. Warren, DAI ReSearch Report 141, UniverSity of Edinburgh 1980]. (1995-03-06)