Имеет ли смысл головоломка продолжений инь и янь на типизированном языке?

Этот вопрос связан с"Как работает головоломка инь-янь?", Пример инь-ян продолжений в схеме выглядит следующим образом:Статья в википедии:

(let* ((yin
     ((lambda (cc) (display #\@) cc) (call-with-current-continuation (lambda (c) c))))
   (yang
     ((lambda (cc) (display #\*) cc) (call-with-current-continuation (lambda (c) c)))))
(yin yang))

Я пытаюсь написать эквивалентный кусок кода в (редактировать:статически) типизированный язык, такой как SML / NJ, но он дает мне ошибки при печати. Так что либо головоломка не печатается, либо я неправильно понимаю синтаксис схемы. Как будет выглядеть приведенный выше фрагмент кода в SML или Ocaml (сcallcc расширение)?

Кстати, каков источник головоломки? Откуда это?

Редактировать: Я думаю, что знаю ответ. Нам нужен рекурсивный типt сытныйt = t -> s для какого-то типаs.

Редактирование редактирования: Нет это не так, ответ рекурсивный типt сытныйt = t -> t.

Ответы на вопрос(3)

Ваш ответ на вопрос