MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Replacement Rule with Sqrt in denominator

  • To: mathgroup at
  • Subject: [mg114603] Re: Replacement Rule with Sqrt in denominator
  • From: Richard Fateman <fateman at>
  • Date: Fri, 10 Dec 2010 02:28:42 -0500 (EST)
  • References: <idnqpr$q58$> <idqd1i$j3o$>

On 12/9/2010 3:03 AM, Sebastian wrote:
> I don't want to claim that pattern matching in Mathematica is bugged,
> I am certainly not entitled to do so. I was always quite happy to
> follow the rules and look at the FullForm in order to create the
> correct pattern, until I learned (actually just by following this
> thread) that this does not always produce the expected results. So
> even though this may not be a bug, pattern matching can be very
> confusing sometimes, and, in terms of usability, may seem to be poorly
> implemented to some people.
> Having said that, could somebody give me a little insight on how
> pattern matching "really" works (I'm sure Daniel has done so many
> times already, please feel free to refer me to previous posts!):
> What set (or class) of expressions does pattern matching exclude from
> its "normal" behavior (obviously there is Rational, Complex,
> whatnot...)?

Apparently these are called "Raw" objects, and there are others, like
SparseArray, and some Graphics thing/?/

  Why? Are there different such classes? Why does 3/5[[1]]
> fail (alternatively: Why does Rational behave differently then List,
> say)?

While a+b is internally a list of 3 items,  Plus, a, b ...  I expect 
that 3/4 is NOT a list of 3 items, Rational, 3, 4,  but some primitive
encoded object. What FullForm claims is in fact false.

An analogy:
  in other systems you have a floating-point number x=3.145.  You do
not expect x[[3]] to be "1".  Though of course you might allow that if
you interpret "parts" of floating point numbers to do a string 
conversion etc.

This happens on some level for EVERYTHING.  After all, an integer
in FullForm is a character string with decimal digits, but truly
internally an integer is some encoding in 32 or 64 or more bits.

I think that, given the FullForm appearance of something like 3/4, it 
would not be much of a stretch to allow part extraction from Rationals, 
and to do pattern-matching on their parts.  It would make
FullForm more accurate in some sense.

  WRI policy is to disagree.


  • Prev by Date: Re: On the foundation of Mathematica, was Re: Foo /: Plus[b_Foo] := b
  • Next by Date: Re: FileName Widget
  • Previous by thread: Re: Replacement Rule with Sqrt in denominator
  • Next by thread: Re: Replacement Rule with Sqrt in denominator