определением правильного типа исключений

(Вопрос для новичков. :-))

Предположим, у вас есть последовательность операций (проверка работоспособности во внешнем мире). Если здравомыслие терпит неудачу, приходится кричать.

Однако если Haskell требует определения обеих ветвей. Случай fail - это монада. Однако я не уверен, какой тип нужно сгенерировать в другом случае. Компилятор считает, что предполагаемый тип - это IO a. Однако я не уверен, как создать запретный ввод-вывод a.

holler msg test =  
  do
    if not test 
      then
      fail msg
      else
      -- ??? no-op

main :: IO ()
main = do
  holler "Go" True
5
задан Paul Nathan 2 August 2011 в 21:50
поделиться