Re: MathLink Q: Not working anymore!!
- Subject: [mg3280] Re: MathLink Q: Not working anymore!!
- From: wagner at bullwinkle.cs.Colorado.EDU (Dave Wagner)
- Date: 23 Feb 1996 13:08:37 -0600
- Approved: usenet@wri.com
- Distribution: local
- Newsgroups: wri.mathgroup
- Organization: University of Colorado, Boulder
- Sender: daemon at wri.com
In article <4gbvpc$mqo at dragonfly.wolfram.com>, Chang-Hyeon Song <song at cs.purdue.edu> wrote: >---------------- >:Begin: >:Function: m2c >:Pattern: M2C[exp_] >:Arguments: {exp} >:ArgumentTypes: {Manual} >:ReturnType: Manual >:End: >: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: ClearAll[M2C] SetAttributes[M2C, HoldAll] M2C[exp_] := ExternalCall[LinkObject[.....], 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 princon.com http://www.princon.com/princon