Prelude.catch vs. Exception.catch

Ashley Yakeley ashley@semantic.org
Tue, 14 May 2002 01:41:06 -0700


--Emailer_-1190570758
Content-Type: text/plain; charset="US-ASCII"

At 2002-05-13 22:07, Ashley Yakeley wrote:

>I've noticed something a bit unusual about Exception.catch.

Curiously, the definition of Exception.evaluate given in the GHC 
Libraries documentation sec. 5.12.3 is not that actually implemented by 
GHC.

   	evaluate' :: a -> IO a;
   	evaluate' a = a `seq` return a;

"evaluate' undefined" is bottom, whereas "Expression.evaluate undefined" 
is an IO action that "fails" when executed. But both will be caught by 
Exception.catch.

-- 
Ashley Yakeley, Seattle WA

--Emailer_-1190570758
Content-Type: text/plain; name="TestException.hs";
 x-mac-type="54455854";
 x-mac-creator="522A6368"
Content-transfer-encoding: base64
Content-Disposition: Attachment; filename="TestException.hs"

LS0gZ2hjIC1wYWNrYWdlIGxhbmcgVGVzdEV4Y2VwdGlvbi5ocyAtbyBUZXN0RXhjZXB0aW9uCm1v
ZHVsZSBNYWluIHdoZXJlCgl7CglpbXBvcnQgSU9SZWY7CglpbXBvcnQgcXVhbGlmaWVkIEV4Y2Vw
dGlvbjsKCglnZXRQdXJlRXhjZXB0aW9uIDo6IGEgLT4gSU8gKE1heWJlIEV4Y2VwdGlvbi5FeGNl
cHRpb24pOwoJZ2V0UHVyZUV4Y2VwdGlvbiBhID0gKEV4Y2VwdGlvbi5jYXRjaCAoc2VxIGEgKHJl
dHVybiBOb3RoaW5nKSkgKHJldHVybiAuIEp1c3QpKTsKCglzaG93SU9TIDo6IFN0cmluZyAtPiBJ
TyBTdHJpbmcgLT4gSU8gKCk7CglzaG93SU9TIHMgaW9zID0gZG8KCQl7CgkJcHV0U3RyIChzICsr
ICI6CSIpOwoJCW1wZSA8LSBnZXRQdXJlRXhjZXB0aW9uIGlvczsKCQljYXNlIG1wZSBvZgoJCQl7
CgkJCUp1c3QgcGUgLT4gcHV0U3RyTG4gKCJwdXJlIGV4Y2VwdGlvbiAoIisrIChzaG93IHBlKSAr
KyIpIik7CgkJCU5vdGhpbmcgLT4gZG8KCQkJCXsKCQkJCXJlc3VsdCA8LSBFeGNlcHRpb24uY2F0
Y2ggKGlvcykgKFxfIC0+IHJldHVybiAiIik7CgkJCQltcnBlIDwtIGdldFB1cmVFeGNlcHRpb24g
cmVzdWx0OwoJCQkJY2FzZSBtcnBlIG9mCgkJCQkJewoJCQkJCUp1c3QgcGUgLT4gcHV0U3RyTG4g
KCJyZXR1cm5lZCBwdXJlIGV4Y2VwdGlvbiAoIisrIChzaG93IHBlKSArKyIpIik7CgkJCQkJTm90
aGluZyAtPiBkbwoJCQkJCQl7CgkJCQkJCUV4Y2VwdGlvbi5jYXRjaCAoZG8KCQkJCQkJCXsKCQkJ
CQkJCXMgPC0gaW9zOwoJCQkJCQkJcHV0U3RyTG4gKCJ2YWx1ZSAoIisrIChzaG93IHMpICsrIiki
KTsKCQkJCQkJCX0pCgkJCQkJCQkoXGUgLT4gcHV0U3RyTG4gKCJJTyBleGNlcHRpb24gKCIgKysg
KHNob3cgZSkgKysiKSIpKTsKCQkJCQkJfTsKCQkJCQl9OwoJCQkJfTsKCQkJfTsKCQl9OwoKCWV2
YWx1YXRlJyA6OiBhIC0+IElPIGE7CglldmFsdWF0ZScgYSA9IGEgYHNlcWAgcmV0dXJuIGE7CgoJ
bWFpbiA6OiBJTyAoKTsKCW1haW4gPSBkbwoJCXsKCQlzaG93SU9TICJyZXR1cm4gdGV4dCIJCQko
cmV0dXJuICJ0ZXh0Iik7CgkJc2hvd0lPUyAiZmFpbCB0ZXh0IgkJCQkoZmFpbCAidGV4dCIpOwoJ
CXNob3dJT1MgImVycm9yIHRleHQiCQkJKGVycm9yICJ0ZXh0Iik7CgkJc2hvd0lPUyAidW5kZWZp
bmVkIgkJCQl1bmRlZmluZWQ7CgkJc2hvd0lPUyAic2VxIHVuZGVmaW5lZCAocmV0dXJuIHRleHQp
Igkoc2VxIHVuZGVmaW5lZCAocmV0dXJuICJ0ZXh0IikpOwoJCXNob3dJT1MgInNlcSB1bmRlZmlu
ZWQgKHJldHVybiB1bmRlZmluZWQpIgkoc2VxIHVuZGVmaW5lZCAocmV0dXJuIHVuZGVmaW5lZCkp
OwoJCXNob3dJT1MgInJldHVybiAoc2VxIHVuZGVmaW5lZCB0ZXh0KSIJKHJldHVybiAoc2VxIHVu
ZGVmaW5lZCAidGV4dCIpKTsKCQlzaG93SU9TICJldmFsdWF0ZSB1bmRlZmluZWQiCShFeGNlcHRp
b24uZXZhbHVhdGUgdW5kZWZpbmVkKTsKCQlzaG93SU9TICJldmFsdWF0ZScgdW5kZWZpbmVkIgko
ZXZhbHVhdGUnIHVuZGVmaW5lZCk7CgkJc2hvd0lPUyAicmV0dXJuIHVuZGVmaW5lZCIJCShyZXR1
cm4gdW5kZWZpbmVkKTsKCQl9OwoJfQo=
--Emailer_-1190570758--