Объект, возвращаемый delay
в Схеме, является "обещанием", но обещания не считаются типом (поэтому нет процедуры promise?
, и она не указана как тип в R5RS или R6RS).
Есть ли сильный резон, почему это так? Мне кажется вполне естественным сделать что-то вроде (if (promise? x) (force x) x)
, например. (И я вижу, что некоторые реализации позволят мне не выполнять обещания, а другие - нет). Кроме того, если я могу сохранить что-то в переменной и передать его, я чувствую, что должен иметь тип.