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