[Haskell-cafe] Detecting Cycles in Datastructures
Tom Hawkins
tom at confluent.org
Thu Oct 27 12:30:45 EDT 2005
Lennart Augustsson wrote:
> Tom Hawkins wrote:
>
>> In a pure language, is it possible to detect cycles in recursive data
>> structures? For example, is it possible to determine that "cyclic"
>> has a loop? ...
>>
>> data Expr = Constant Int | Addition Expr Expr
>>
>> cyclic :: Expr
>> cyclic = Addition (Constant 1) cyclic
>>
>>
>> Or phased differently, is it possible to make "Expr" an instance of
>> "Eq" such that cyclic == cyclic is smart enough to avoid a recursive
>> decent?
>
>
> No.
Bummer -- but as I suspected.
> And there is nothing that says that your definition of cyclic
> will actually have a cycle in the implementation.
Would you elaborate? Are you referring to the possibility that
"cyclic", or at least the second Addition operand, may not be evaluated?
Thanks!
-Tom
>
> -- Lennart
>
>
More information about the Haskell-Cafe
mailing list