Am Di., 6. Sept. 2022 um 21:46 Uhr schrieb Wolfgang Corcoran-Mathe <[email protected]>: > > On 2022-09-05 08:30 +0200, Marc Nieper-Wißkirchen wrote: > > With just the small language, we can't write sensible ad-hoc polymorphic > > procedures that handle promises differently. > > I agree, although SRFIs can, of course, specify procedures that can’t > be portably implemented.
Sure. But in this case, it is not the problem that an implementation would have to be non-portable but that there cannot be an implementation, portable or not, on every Scheme implementation that is allowed by R7RS. (As I tried to explain earlier, even access to something like "%true-promise" would not help.) In the context of the large language and its foundations, we should have a discussion on whether we should tighten the specification of promises in the small language. At the moment, implementations have a lot of creative leeways but this does not help portable code. I would suggest either making promises a disjoint type or making them indistinguishable from ordinary values, which would mean implicit forcing and probably a Haskell-like kernel for Scheme.
