Main_ones is a function that produces a stream of ones.
You need to look at the memory as it is evaluated, to check if it is circular.
For example, if we evaluated ones 4 times, the memory would be like this :
{ 1 , { 1 , { 1 , { 1 , ones }}}} . Now, ones in this memory block is a pointer to the function ones.
if we assume that that each { _ , _} is a new block of memory that is heap allocated, then each { _ , _} inserts in the first place a number and in the second a pointer to the next block of memory.
The pointers, in this way create a line which is non-circular. if we removed the pointer of ones and instead had a pointer to the first block, that would create a circle.