Рассмотрим этот пример:
foo ~(Just x) = "hello"
main = putStrLn $ foo Nothing
Здесь используется неопровержимый образец (часть ~
). Неопровержимые шаблоны всегда «совпадают», поэтому печатается hello
.
foo ~(Just x) = x
main = putStrLn $ foo Nothing
Теперь, образец все еще совпадает, но когда мы попытались использовать x
, когда его там не было, мы получили неопровержимую ошибку сопоставления с образцом:
Irr.hs: /tmp/Irr.hs:2:1-17: Irrefutable pattern failed for pattern (Data.Maybe.Just x)
Это тонко в отличие от ошибки, которую вы получаете, когда нет подходящего шаблона:
foo (Just x) = x
main = putStrLn $ foo Nothing
Это выводит
Irr.hs: /tmp/Irr.hs:2:1-16: Non-exhaustive patterns in function foo
Конечно, это несколько надуманный пример. Более вероятное объяснение состоит в том, что это произошло из паттерна в привязке let
, , как предположил chrisdb .
Что ж, вы можете присоединиться к группе Google Quartz.NET и задавать вопросы или читать архивы. Я успешно использую кварцевый сервер-клиент с удаленным планированием с клиента, все, что мне нужно, я узнал из загруженных образцов кода.