MathGroup Archive 1998

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

Search the Archive

programming in Mathmatica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg13422] programming in Mathmatica
  • From: john at dlugosz.com (John M. Dlugosz)
  • Date: Thu, 23 Jul 1998 03:33:18 -0400
  • Abuse-reports-to: abuse at airmail.net to report improper postings
  • Organization: at home
  • Sender: owner-wri-mathgroup at wolfram.com

Consider this function:

(*1*)	ackPrim[m_Integer, 0] := (
(*2*)			++counter;
(*3*)			{result_,rc_ } -> cAck[m-1,1]; (*4*)			{ result, rc+1 }
(*5*)		);


The function cAck returns a list of two items.  In Perl I write:
	my ($result, $rc) = cAck ($m-1, 1);

that is, the first item in the list gets assigned to result, the second 
to rc.  I could get a list and then refer to list[[1]] and list[[2]],
but  I was attempting to use the Blank and pattern matching to
"deconstruct"  the list succinctly, as alluded to in the Big Book. 
This is an idiom I  recognise from Prolog, and to some degree in Perl.

Of course, the above code does not work, because result and rc are 
localized to that one line.  

=> So what is a succinct idiom for this in Mathematica?

Next, you see I'm using a list of two values.  For more complex
programs,  such "structures" represented as lists would get a little
awkward.  I can  imagine using access functions to pull the correct
member of a list, so I  get the benifit of named structure members, and
even creating an operator  for that which works similarly to the "dot"
in Algol-decendent languages.   So, I assume people have done this
already and there is a standard idiom  in circulation for it.  What is
it, so I don't have to re-invent my own?

=> What is the standard practice for using what other languages do with 
"structures"?

--John


  • Prev by Date: importing LaTeX
  • Next by Date: Re: Space between different Cells
  • Previous by thread: importing LaTeX
  • Next by thread: Re: programming in Mathmatica