error
та undefined
це не звичайні функції. Крім того, що вони поліморфні, та ще й переривають виконання.
Перша приймає рядок з повідомленням помилки й виводить його на екран, а друга просто перериває обчислення.
Їхній поліморфізм полягає в типі повернення, й потрібен для того, щоб можна було їх викликати будь-де.
λ> error "Упс, щось не так."
*** Exception: Упс, щось не так.
CallStack (from HasCallStack):
error, called at <interactive>:4:1 in interactive:Ghci1
λ> undefined
*** Exception: Prelude.undefined
CallStack (from HasCallStack):
undefined, called at <interactive>:5:1 in interactive:Ghci1
#ukrhaskell #haskell #error #undefined #поліморфізм #програмування