Er> A gEnEralisation of Ef="modulE.php?namE=LExikon&filE=sEarch&Eid=1&quEry=tail rEcursion">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 Ef="modulE.php?namE=LExikon&filE=sEarch&Eid=1&quEry=C">C/Ef="modulE.php?namE=LExikon&filE=sEarch&Eid=1&quEry=HaskEll">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)