C # bir web API için bir istemci oluştururken , null
iki farklı şeyi temsil edecek bir değer olarak ilgili bir sorunla karşılaştım :
- hiçbir şey , örneğin bir
foo
mayın olabilir veya olmayabilirbar
- bilinmiyor : Varsayılan olarak API yanıtı yalnızca bir özellik alt kümesi içerir, hangi ek özellikleri istediğinizi belirtmeniz gerekir. Yani bilinmeyen özelliği API talep edilmemiştir anlamına gelir.
Bazı aramalardan sonra, belki de (veya Option) tipini, fonksiyonel dillerde nasıl kullanıldığını ve kullanıcıyı bir değerin bulunmaması hakkında düşünmeye zorlayarak boş dereferencing sorunlarını nasıl "çözdüğünü" öğrendim. Ancak, tüm kaynakları ı yerine bahsettik karşılaşılan null adlı ile Belki . Üç değerli mantıktan bahsetmiştim , ama tam olarak anlayamıyorum ve çoğu zaman sözü "kötü bir şey" bağlamındaydı.
Şimdi hem boş hem de Belki kavramının, bilinmeyen ve hiçbir şeyi temsil etmenin mantıklı olup olmadığını merak ediyorum . Bu okuduğum üç değerli mantık mı yoksa başka bir adı var mı? Ya da belki bir Belki bir Belki iç içe geçmenin yolu mu?
M M x
ve M x
olması gerekir.
Maybe a
aynı , anlamsal olarak , + 1 + 1 ile aynıdır ve @Andej cevabından yazmak için izomorfiktir . Bu tür için kendi monad örneğinizi de tanımlayabilir ve bu nedenle farklı monad birleştiriciler kullanabilirsiniz. Maybe Maybe a
UserInput a
M (M x)
ve M x
aynı anlambilime sahip olması" yanlıştır . Al M = List
örneğin: listelerinin listeleri listeleri gibi aynı şey değildir. Ne zaman M
bir monad, orada bir olan dönüşüm dan (yani monad çarpma) M (M x)
için M x
hangi aralarındaki ilişkiyi açıklar, ancak "aynı semantik" yok.
null
. Tamamen kırılmış bir fikir.