Newsgroups: comp.lang.scheme
Path: cantaloupe.srv.cs.cmu.edu!europa.chnt.gtegsc.com!howland.reston.ans.net!math.ohio-state.edu!news.cyberstore.ca!skypoint.com!umn.edu!micro!wagner
From: wagner@micro (Paul Wagner)
Subject: Scheme question - preventing full evaluation in function
Message-ID: <DDJ573.HCJ@news.cis.umn.edu>
Sender: news@news.cis.umn.edu (Usenet News Administration)
Nntp-Posting-Host: micro.cs.umn.edu
Organization: University of Minnesota, Twin Cities
Date: Fri, 18 Aug 1995 23:28:53 GMT
Lines: 30

I'm trying to put together a function in MIT Scheme which returns an
expression involving another function.  I'm having trouble preventing
evaluation of one of the arguments in the expression.  A simplified
version is:

(define (testfunc aholder blist)
   (let ((avar aholder))
      ...			; other stuff
      `(func ,avar ,(car blist)) ) )

An example call (assuming value 10 is bound to a):

> (testfunc a '(b c))

I would like testfunc to return (func a b), but with the
function definition above I get (func 10 b).  I cannot
change how a gets its value or the testfunc argument list, but
I could change the let assignment or the return expression.
Any ideas on how to modify the above code to accomplish this?  
This is a sticky point in a large conversion project,
and any help would be *much* appreciated.

thanks,

Paul
--
* Paul J. Wagner                School   - wagner@cs.umn.edu               *
* Computer Science Department   Work     - pwagner@uwstout.edu             *
* University of Minnesota                                                  *
*    *     *    *     *     *     *     *     *     *     *     *     *    * 
