From bbolker at gmail.com  Mon Oct 12 02:05:01 2015
From: bbolker at gmail.com (Ben Bolker)
Date: Sun, 11 Oct 2015 20:05:01 -0400
Subject: [Rd] identical(..., ignore.environment=TRUE)
Message-ID: <561AF92D.90801@gmail.com>


  It seems odd/inconvenient to me that the "ignore.environment" argument
of identical() only applies to closures (which I read as 'functions' --
someone can enlighten me about the technical differences between
functions and closures if they like -- see below for consequences of my
confusion).  This is certainly not a bug, it's clearly documented, but
it seems like a design flaw.  It would certainly be convenient to be
able to ignore differences in environments when comparing complex
objects with lots of deeply nested formula and terms objects with
environments ...

   Can anyone suggest a reason for this design?

Example:

> f1 <- formula()
> f2 <- formula()
> environment(f2) <- new.env()
> identical(f1,f2)
[1] FALSE
> identical(f1,f2,ignore.environment=TRUE)
[1] FALSE

Actually, maybe I don't understand how this is supposed to work since I
thought this would be TRUE:

> f1 <- function() {}
> f2 <- function() {}
> environment(f1) <- new.env()
> environment(f2) <- new.env()
> identical(f1,f2,ignore.environment=TRUE)   ## FALSE

  Maybe the problem *is* that I don't know the difference between a
function and a closure ... ?

  Ben Bolker



[Rd] identical(..., ignore.environment=TRUE)
Ben Bolker