在C#中为Web API创建客户端时,我遇到了一个问题,该问题null
是它代表两个不同的东西:
- 一无所有,例如
foo
可能有也可能没有bar
- 未知:默认情况下,API响应仅包含属性的子集,您必须指出所需的其他属性。因此,未知表示未从API请求该属性。
经过一番搜索,我发现了Maybe(或Option)类型,它在功能语言中的用法以及如何通过迫使用户考虑可能缺少值的方式来“解决” null取消引用问题。然而,所有的资源,我遇到谈到更换空与可能。我确实找到了三值逻辑的一些提及,但是我并不完全理解它,而且多数时候提到这是在“这是一件坏事”的背景下。
我现在想知道将null和Maybe的概念分别表示未知和什么都不有意义。这是我读过的三值逻辑,还是别的名字?还是在Maybe中嵌套Maybe的预期方式?
M M x
并且M x
应该具有相同的语义。
M (M x)
并且M x
应该具有相同的语义” 是错误的。以M = List
列表为例:列表列表与列表不同。当M
是monad时,存在从到的转换(即monad乘法)M (M x)
来M x
解释它们之间的关系,但是它们没有“相同的语义”。
null
。这是一个彻底破裂的想法。