Re: Function changes in a program
- To: mathgroup at smc.vnet.net
- Subject: [mg92290] Re: Function changes in a program
- From: Albert Retey <awnl at gmx-topmail.de>
- Date: Sat, 27 Sep 2008 06:47:08 -0400 (EDT)
- References: <gbfloa$68a$1@smc.vnet.net>
Chris Degnen wrote:
> Hi
>
> Does anyone have a suggestion on how to
> check for changes in environment function
> variables in a program. I.e. starting with ...
>
> initial environment
>
> f[a]=1
> f[b]=2
>
>
> later environment
>
> f[a]=1
> f[b]=99
> f[m]=3
>
> I'd like to be able to determine that
> f[b] had changed and f[m] was added.
you just need to check the DownValues of f, like this:
(* create definitions for f *)
f[a] = 1
f[b] = 2
(* save current state for later reference *)
saveenv = DownValues[f]
(* change definitions *)
f[a] = 1
f[b] = 99
f[m] = 3
(* check whether something has changed: *)
DownValues[f] === saveenv
(* poor mans diff *)
Union[Flatten[{
Complement[DownValues[f], saveenv],
Complement[saveenv, DownValues[f]]
}]]
hth,
albert