Przypadkowo usunąłem mój wpis, ale ponawiam to pytanie w celu wyjaśnienia.Potwierdzanie leniwego oceniania
Jeśli mam funkcję:
const x = 1
Jeśli pytam Haskell:
const (1/0)
on powróci 1
ponieważ ocena leniwy faktycznie nie obliczają 1/0
jest, prawda? To nie musi.
Tak, to jest nie ścisłe gwarancje semantyczne Haskella. –
Należy zauważyć, że '1/0' nie rzuca wyjątku - po prostu zwraca specjalną wartość" Double ". Ale jeśli zmienisz go na coś, co powoduje wyjątek (np. "Błąd", ""), nadal otrzymujesz odpowiedź "1". – MathematicalOrchid
Oczywiście, 'const' jest złą nazwą - można nazwać to" const1 ", a w rzeczywistości można go zdefiniować jako" const1 = const 1 ". Nazwa 'const', podobnie jak większość funkcji Prelude, nie powinna być używana do niczego innego. – leftaroundabout