C#でWeb APIのクライアントを作成しているときに、null
2つの異なるものを表す値として問題が発生しました。
- 何もありません。たとえば
foo
、bar
- 不明:デフォルトでは、API応答にはプロパティのサブセットのみが含まれます。必要な追加のプロパティを指定する必要があります。したがって、不明とは、プロパティがAPIからリクエストされなかったことを意味します。
Maybe(またはOption)タイプ、関数型言語での使用方法、およびユーザーに値の不在について考えさせることによりnull逆参照の問題を「解決」する方法について調べたところ、次のことがわかりました。しかし、私が遭遇したすべてのリソースはnullをMaybeで置き換えることについて話しました。私は3値的論理についての言及をいくつか見つけましたが、私はそれを完全には理解していません。ほとんどの場合、その言及は「それは悪いこと」の文脈で行われていました。
nullとMaybeの両方の概念を持ち、それぞれ未知数と何も表現しないことが理にかなっているのではないかと思っています。これは私が読んだ3値論理ですか、それとも別の名前ですか?または、多分多分に多分をネストするための意図された方法ですか?
M M x
ありM x
、同じセマンティクスを持つべきです。
Maybe a
同じである、意味的に、同じである、及び同型@Andejの答えから入力します。この型のために独自のモナドインスタンスを定義することもできるため、異なるモナドコンビネータを使用できます。a + 1 + 1Maybe Maybe a
UserInput a
M (M x)
とM x
同じ意味を持つべきです」。テイクM = List
例えば:リストのリストは、リストと同じものではありません。M
がモナドである場合、それらの間の関係を説明する変換(つまりモナド乗算)M (M x)
がM x
ありますが、それらには「同じセマンティクス」はありません。
null
。それは完全に壊れた考えです。