Имеет ли смысл головоломка продолжений инь и янь на типизированном языке?
Этот вопрос связан с"Как работает головоломка инь-янь?", Пример инь-ян продолжений в схеме выглядит следующим образом:Статья в википедии:
(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
.