This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Jim Blandy <jimb@red-bean.com> writes: > > Well, only those types ("tags" I guess you'd say) with a non-NULL > > (*call) member would be callable. Are you suggesting that foreign > > functions should be something other than smobs altogether? > > Not exactly --- I'm saying that I'm not keen on having objects whose > primary purpose is something other than representing a function be > callable as if it were a function. > > So, for example, if you had some smobs that were callable, and other > smobs that served other purposes, and the two were distinct, that > would be cool. One of the recent changes to SCM was the transmogrification of tc7_cclo into tc7_specfun. Bits 8-15 are used as a type tag ala smobs and the upper 16 bits are available as a length spec for cclos. So far there are three types: tc16_cclo, tc16_apply, and tc16_call_cc. The latter two are handled specially in the evaluator, which means that APPLY and CALL-WITH-CURRENT-CONTINUATION no longer need be closures for the sake of tail recursiveness. @CALL-WITH-CURRENT-CONTINUATION is gone. Aubrey has taken a shine to @APPLY, so it is still there, but no longer used for implementing APPLY. In the first cut, I did APPLY and CALL/CC as special, callable, smobs. This worked, but having a separate type for function extension is in my opinion a better approach.