
well, it is a little bit tricky. you know, imps do not always make what you want. imp_creates x = x `knot` imp x where knot = (:) imagine the following: you pull a foulard out of your sleeve, foulard : sleeve where sleeve = imp_creates foulard and pull foulard : foulard : sleeve where sleeve = imp_creates foulard and pull. foulard : foulard : foulard : sleeve where sleeve = imp_creates foulard you will waste more and more space, maybe your storage will swell to discworld. this is recursion, but not a cyclic structure. on the other hand: serviette_ring where serviette_ring = foulard `knot` serviette_ring you will pull one single foulard through that thing. x@( foulard `knot` serviette_ring ) where knot = (:) serviette_ring = x and then there is a knot with the beginnig of the same thing you pulled out before. beginning@( foulard `knot` beginning ) where knot = (:) if you pull more and more, you will get the same foulard again and again. you do not need an imp to produce more and more foulards, because this knot closes the ring. so, you will never fill the room just by pulling, because this is a nice little "cyclic structure". - marc