Parece ser sabido que as linguagens de programação não podem ter somas, produtos e não-terminação juntos.
Q1 . Isso é verdade? Abaixo (ou no link acima que eu dei) está um argumento parcial.
No entanto, a programação genérica de Hinze com adições ignora a questão, mesmo depois de discutir um pouco precisamente qual é a categoria envolvida. Em particular, ele fala (aparentemente sem reservas) sobre Haskell ser modelado pela categoria de pedidos parciais contínuos e estritos e de somas e produtos. Mas sabemos que Haskell não tem somas (certo?). (A parte dos usos de papel S e T em vez, mas que não permite a não terminação).
Q2 Então, o que estou perdendo? Eu vejo quatro opções:
- As pessoas geralmente ignoram a não rescisão de propósito quando discutem Haskell. Talvez este artigo também o faça. Mas por que alguém mencionaria CPOs então?
- A barreira que discuto pode ser evitada de maneiras inteligentes. Em particular, os modelos de papel não rigorosas funções Haskell por funções estritas f : Um ⊥ → B , por outras razões.
- O artigo menciona a limitação e eu perdi isso. Eu gastei algum esforço procurando por essa menção e não encontrei nenhuma.
- Este é um erro real e, como todo mundo continua reivindicando Haskell, de fato, carece de somas categóricas (como outras pessoas concordam), mesmo que o jornal afirme
Either
ser uma coisa dessas. Tudo funciona bem, em vez disso, em idiomas totais, com tipos indutivos e coindutivos.
fundo
Isso significa, por exemplo, que a categoria de conjuntos pontiagudos , com seu objeto zero, não pode ser fechada bicartesiana.