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 |