Dave Whipp wrote: > Darren Duncan wrote: > > Assuming that all elements of $a and $b are themselves immutable to all > > levels of recursion, === then does a full deep copy like eqv. If at any > > level we get a mutable object, then at that point it turns into =:= (a > > trivial case) and stops. > > ( 1, "2.0", 3 ) === ( 1,2,3 ) > > True or false? > > More imprtantly, how do I tell perl what I mean? The best I can think of is: > > [&&] (@a »==« @b) > Vs > [&&] (@a »eq« @b) > > But this only works for nice flat structures. IIRC, this is because the implicit coercion to number or string gets in the way. IMHO, "@a == @b" ought to be synonymous with "all (@a »==« @b)" - it's far more likely to DWIM. Likewise with "@a eq @b" and "all (@a »eq« @b)". If what you want to do is to compare the lengths of two lists, you ought to do so explicitly: "+@a == +@b". Getting back to the notion of immutability: can someone give me an example of a realistic immutable analog to a list, and then give an example demonstrating the practical distinction between === and eqv based on that? I want to see why it's important to distinguish between comparing mutable data types and comparing immutable data types. (Incidently, I think that a suitable word-based synonym for =:= would be "is".) -- Jonathan "Dataweaver" LangThread Previous | Thread Next