2016.11.26 05:55
nulle wyższego rzędu
Najpierw przypomnienie: kiedy w bazie danych wartość jakiegoś pola jest nieznana, jest tam null. Na przykład jeśli w tabeli ze skoczkami narciarskimi jest kolumna "wzrost", a dla jakiegoś skoczka wzrost nie jest znany, w tym polu tego rekordu jest null. Null oznacza "nie wiadomo". W tym przypadku: "nie wiadomo, ile wynosi wzrost tego skoczka". A teraz dalej: jeśli mam w XML-u zrzut fragmentu bazy danych, ale z jakiegoś powodu w tym zrzucie nie mam niektórych pól, to takie pole, którego nie ma w XML-u, jest niewiadomą innego rodzaju niż zwykły null. Jest niewiadomą, która oznacza "nie wiem, jaka jest wiedza bazy danych o wzroście tego zawodnika; nie wiem nawet, czy baza danych wie, jaki jest ten wzrost". Więc do reprezentowania tej niewiadomej potrzebny jest inny null - nazywam go sobie nullem poziomu drugiego. Można też wyobrazić sobie sytuacje, kiedy potrzebowalibyśmy nulli jeszcze wyższych poziomów.
Kilka lat temu myślałem o tym teoretycznie. Teraz mam taką sytuację naprawdę, w jednym narzędziu, które piszę.
komentarze:
2020.05.21 19:02 Piotrek
W Javie jest do tego Optional, a w Haskellu Maybe.
2021.01.14 08:34 Piotrek
Ludzie mówią, że właśnie dlatego lepiej mieć w języku Optional (zwany w Haskellu "Maybe") niż typy które są nullable (na przykład typ "int?").
powrót na stronę główną
RSS