coroutines tweak
[lambda.git] / coroutines_and_aborts.mdwn
index a0b35c8..2ab7876 100644 (file)
@@ -338,7 +338,27 @@ So what I should have said is that when you evaluate the expression:
 
 *and that exception is never caught*, then the effect is for the program to immediately stop.
 
-Of course, it's possible to handle errors in other ways too. There's no reason why the implementation of `List.nth` *had* to do things this way. They might instead have returned `Some a` when the list had an nth member `a`, and `None` when it does not. But it's pedagogically useful for us to think about this pattern now.
+Trivia: what's the type of the `raise (Failure "two")` in:
+
+       if x = 1 then 10
+       else raise (Failure "two")
+
+What's its type in:
+
+       if x = 1 then "ten"
+       else raise (Failure "two")
+
+So now what do you expect the type of this to be:
+
+       fun x -> raise (Failure "two")
+
+How about this:
+
+       (fun x -> raise (Failure "two") : 'a -> 'a)
+
+Remind you of anything we discussed earlier? /Trivia.
+
+Of course, it's possible to handle errors in other ways too. There's no reason why the implementation of `List.nth` *had* to raise an exception. They might instead have returned `Some a` when the list had an nth member `a`, and `None` when it does not. But it's pedagogically useful for us to think about the exception-raising pattern now.
 
 When an exception is raised, it percolates up through the code that called it, until it finds a surrounding `try ... with ...` that matches it. That might not be the first `try ... with ...` that it encounters. For example:
 
@@ -383,7 +403,7 @@ Many programming languages have this simplified exceution pattern, either instea
            if (x == 1) then
                value = 10
            else
-               return 20         -- return early
+               return 20         -- abort early
            end
            return value + 100    -- in Lua, a function's normal value
                                  -- must always also be explicitly returned