Вы не можете - у вас должен быть какой-то способ проверить вещи и определить, являются ли они истинными или ложными.Вы можете подобраться ближе, с некоторым функциональным представлением логических значений.Например, с общей церковной кодировкой:
(define (true x y) x)
(define (false x y) y)
и теперь вы можете рассматривать тест (который возвращает одно из этих закодированных логических значений) как функцию, которая принимает продолжение «успешно» и «неудачно»и использует это для продолжения:
(define (if c x y) (c x y))
Если вы хотите поэкспериментировать с этим, вам нужно учитывать тот факт, что Scheme не ленивый язык, поэтому вам нужно все продумать.Например:
(define (true x y) (x))
(define (false x y) (y))
(define-syntax if
[(if c x y) (c (lambda () x) (lambda () y))])
(Но вам все еще нужно пересмотреть существующие предикаты и т. Д., Чтобы вернуть эти логические значения.)
В любом случае, call/cc
сам по себе на самом деле не имеет ничего общего...