Ao criar um cliente para uma API da web em C #, deparei-me com um problema referente a null
um valor em que representaria duas coisas diferentes:
- nada , por exemplo, um
foo
pode ou não ter umbar
- desconhecido : por padrão, a resposta da API inclui apenas um subconjunto de propriedades, é necessário indicar quais propriedades adicionais você deseja. Tão desconhecido significa que a propriedade não foi solicitada da API.
Após algumas pesquisas, descobri o tipo Maybe (ou Option), como ele é usado em linguagens funcionais e como "resolve" problemas de cancelamento de referência nulos, forçando o usuário a pensar na possível ausência de um valor. No entanto, todos os recursos que encontrei falaram sobre a substituição de null por Maybe . Eu encontrei algumas menções à lógica de três valores , mas não a entendo completamente e, na maioria das vezes, sua menção estava no contexto de "é uma coisa ruim".
Agora estou me perguntando se faz sentido ter o conceito de null e Maybe , para representar desconhecido e nada, respectivamente. Essa é a lógica de três valores sobre a qual li ou tem outro nome? Ou é a maneira pretendida de aninhar um Talvez em um Talvez?
M M x
e M x
deve ter a mesma semântica.
M (M x)
e M x
deve ter a mesma semântica". Tomemos, M = List
por exemplo: listas de listas não são a mesma coisa que listas. Quando M
é uma mônada, há uma transformação (nomeadamente a multiplicação mônada) a partir M (M x)
para M x
o que explica a relação entre eles, mas eles não têm "a mesma semântica".
null
. É uma ideia completamente quebrada.