[comp.lang.scheme] Testing if a procedure is defined

vladimir@prosper.EBB.Eng.Sun.COM (Vladimir G. Ivanovic) (12/29/90)

MacScheme and Elk are different in small ways.  Elk defines close-port and
MacScheme has close-input-port and close-output-port. 

I'd like to write standard Scheme code which works on *both* systems like:

	(if (test-for-existence <object>)
	    (<consequent>)
	    (<alternative>))

How can I test to see if a procedure (or variable) is defined without causing
an error?  (Am I being unusually thick about this ...?)

-- Vladimir (a Scheme Novice)
--
==============================================================================
   Vladimir G. Ivanovic				Sun Microsystems, Inc
     (415) 336-2315				2550 Garcia Ave., MTV12-33
    vladimir@Sun.COM				Mountain View, CA 94043-1100

      Disclaimer: I speak only for myself.  Your mileage will vary.
==============================================================================

kend@data.UUCP (Ken Dickey) (12/29/90)

vladimir@prosper.EBB.Eng.Sun.COM (Vladimir G. Ivanovic) writes:

>I'd like to write standard Scheme code which works on *both* systems like:

>	(if (test-for-existence <object>)
>	    (<consequent>)
>	    (<alternative>))

>How can I test to see if a procedure (or variable) is defined without causing
>an error?  (Am I being unusually thick about this ...?)

You are not being thick.  There is currently no portable way of doing
this.  The recommended practice is to define a variable with the
implementation name and use this to load the appropriate compatability
file [unfortunately, LOAD is not standard!].  This compatability file
then defines values neccessary to bring the particular implementation
to the baseline required for the particular application.  Of course,
since you are setting a variable, you can load the appropriate file
yourself...

It would be nice if all implementations would define such a "variable".

(define Scheme-Implementation 'random)


-Ken Dickey				kend@data.uucp