Evaluation control in Switch
- To: mathgroup at smc.vnet.net
- Subject: [mg4913] Evaluation control in Switch
- From: sch at mitre.org (Stu Schaffner)
- Date: Fri, 4 Oct 1996 00:17:47 -0400
- Organization: The MITRE Corp.
- Sender: owner-wri-mathgroup at wolfram.com
I am trying to build two-level function evaluations, where a function f[x,y]
is called many times with the same first (say) value and where nontrivial
processing is done on that first value. For example
twoLevelFunction[ p_?IntegerQ ] := Function[
x,
Evaluate[ expensiveProg[ p ] * x ]
];
This works, that is, the Function expression itself is not evaluated but
the expensiveProg is called on the actual value for p. However, suppose
that I wanted to add parameter type checking on the returned function.
Maybe there are much better ways, but one way is
twoLevelFunction[ p_?IntegerQ ] := Function[
x,
Switch[
x,
_?IntegerQ, expensiveProg[ p ] * x,
_, 42
]
];
If anybody knows a better way to add type checking to pure functions I
would appreciate a hint. However, it does point up something I don't
know how to do. How can you force selective evaluation of terms in a
Switch without causing the Switch itself to be evaluated? I've tried
various combinations of Hold and Evaluate without much success.
Stu Schaffner
The MITRE Corp.
sch at mitre.org
==== [MESSAGE SEPARATOR] ====