Re: A few usage based questions
- To: mathgroup at smc.vnet.net
- Subject: [mg61170] Re: A few usage based questions
- From: "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de>
- Date: Tue, 11 Oct 2005 06:29:56 -0400 (EDT)
- Organization: Uni Leipzig
- References: <difrd0$ffr$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
a)
expr = whatReplace[{a, 2, 3, b, c} , {a_Symbol ->
0, a_Integer -> "Ho ho!"}]
Block[{whatReplace = ReplaceAll},
expr]
and
Block[{whatReplace = ReplaceRepeated},
expr]
you cant use the short form "/." or "//.",
Mathematica has a parser and not a string
rewriting system.
b) Mathematica has not types and it is a untyped
language. You can restrict the pattern for a rule
application. A pattern is mutch more powerfull
than an "type". In your example I would prefer
ff[x : (_Real | _Integer)] := Boah
because it avoid the repeated usage of the x. But
as long as it works there should be no problem.
c) you always know, that a function return a
Mathematica expression.
Regards
Jens
"Matt" <anonmous69 at netscape.net> schrieb im
Newsbeitrag news:difrd0$ffr$1 at smc.vnet.net...
| Hello,
| any light shed on the following would be
appreciated:
|
| Question 1: If I wanted to experiment with
ReplaceAll and
| ReplaceRepeated, how would I use a variable to
achieve this?
|
| e.g. I tried this:
| replaceType = /.; (* replaceType would also be
//. for subsequent
| runs*)
| (* initialize counter *)
| counter = 0;
| resultOne = (2 a M[1] M[
| 2] M[] + 3 b M[1, 3] M[2] M["s"] + Log[f[
| M[1] M[1.2] M[3.4] M[M]]]) replaceType
{m1_M
| m2_M :> (++counter; MContainer[m1, m2])}
|
|
| but got the following error:
| Syntax::sntxb : Expression cannot begin with
"replaceType = /.;".
| More...
|
| What I was trying to achieve (for an obviously
longer example) was to
| be able to set the type of replace I wanted to
do at the beginning of
| the cell, then use that symbolic name inside of
the actual 'code'.
| BTW, the sample I am attempting to modify is
from page 615 of Michael
| Trott's "The Mathematica Guidebook for
Programming".
|
|
| Question 2: What is the correct method to limit
the types of values a
| function will accept?
| If I wanted to constrain the argument type of a
function to be all
| reals, is this the right way?
| f[x_Real|x_Integer] := something
| The above works, but I haven't seen my attempt
confirmed in any
| documentation.
|
|
| Question 3: How do I know what a function
returns? (e.g. a boolean or
| Null or an integer, a string, etc.)
|
|
| Thanks much,
|
| Matt
|