MathGroup Archive 1996

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

Search the Archive

Re: MathLink Q: Not working anymore!!

  • To: mathgroup at
  • Subject: [mg3280] Re: MathLink Q: Not working anymore!!
  • From: wagner at bullwinkle.cs.Colorado.EDU (Dave Wagner)
  • Date: Fri, 23 Feb 1996 02:12:36 -0500
  • Organization: University of Colorado, Boulder
  • Sender: owner-wri-mathgroup at

In article <4gbvpc$mqo at>,
Chang-Hyeon Song <song at> wrote:
>:Function:	m2c
>:Pattern:	M2C[exp_]
>:Arguments:	{exp}
>:ArgumentTypes:	{Manual}
>:ReturnType:	Manual
>:Evaluate:	Attributes[M2C] = {HoldAll}
>??M2C says
>M2C[exp] will convert given mathematica an expression or    
>     a compound expression into a correspoding C program
>Attributes[M2C] = {HoldAll}
>M2C[exp_] := 
>  ExternalCall[LinkObject["m2c", 2, 2], 
>   CallPacket[0, {exp}]]
>Putting the Evalauate line in different line doesn't make any difference.
>Can anybody help?

First of all, the SetAttributes command should precede the definition
of the function.  This doesn't always matter, but sometimes it does.

Second, even with the HoldAll attributes, "exp" is being evaluated when
the body of M2C is evaluated.  Try re-defining M2C as:

	SetAttributes[M2C, HoldAll]
	M2C[exp_] :=
	    CallPacket[0, {Unevaluated[exp]}]]

This ought to work, but you don't want to have to do that
every time you load the package.  Try using the following line
in your template file:

	:Arguments:	{Unevaluated[exp]}

I'd be curious to know if that causes mprep to generate the correct
code or not.

		Dave Wagner
		Principia Consulting
		(303) 786-8371
		dbwagner at


  • Prev by Date: Simulation of acoustic wave propagation
  • Next by Date: Re: MathLink Q: Not working anymore!!
  • Previous by thread: MathLink Q: Not working anymore!!
  • Next by thread: Re: MathLink Q: Not working anymore!!