A functionally recursive pull stream