O quebra-cabeça das continuações yin yang faz sentido em um idioma digitado?
Esta questão está relacionada a "Como o quebra-cabeça yin-yang funciona?". O exemplo yin yang de continuações no esquema é assim, de acordo comrtigo @Wikipedia:
(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))
Estou tentando escrever um trecho de código equivalente em um (edit:estatisticament) linguagem digitada, como SML / NJ, mas está me dando erros de digitação. Portanto, ou o quebra-cabeça não digita, ou estou entendendo mal a sintaxe do esquema. Como seria o trecho de código acima em SML ou Ocaml (comcallcc
extensão)?
By the way, qual é a fonte do quebra-cabeça? De onde veio
Editar Acho que sei a resposta. Precisamos de um tipo recursivot
satisfyingt = t -> s
para algum tipos
.
Editar edição: Não, não é, a resposta é do tipo recursivot
satisfyingt = t -> t
.