<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE message PUBLIC
  "-//MLarc//DTD MLarc output files//EN"
  "../../mlarc.dtd"[
  <!ATTLIST message
    listname CDATA #REQUIRED
    title CDATA #REQUIRED
  >
]>

  <?xml-stylesheet href="../../mlarc.xsl" type="text/xsl"?>


<message 
  url="2002/12/5170d849604617577c466f9ddbc70c6a"
  from="Chet Murthy &lt;chet@w...&gt;"
  author="Chet Murthy"
  date="2002-12-12T00:29:37"
  subject="Re: [Caml-list] Resource acquisition is initialization "
  prev="2002/12/5fc049891ea11b2acd98c914bdd66486"
  next="2002/12/4148c2e4e503a36460efef0369cc042f"
  prev-in-thread="2002/12/5fc049891ea11b2acd98c914bdd66486"
  next-in-thread="2002/12/2820617a735026a0db6d33ccaaf53c59"
  prev-thread="2002/12/a7df150482511ac2dc29aad949c1630c"
  next-thread="2002/12/e9bc0bae209d5d139109989b178cbc85"
  root="../../"
  period="month"
  listname="caml-list"
  title="Archives of the Caml mailing list">

<thread subject="[Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/919e5b9de09938198c2fd0856d238c55"
  from="Blair Zajac &lt;blair@o...&gt;"
  author="Blair Zajac"
  date="2002-12-11T19:18:46"
  subject="[Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/5fc049891ea11b2acd98c914bdd66486"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2002-12-11T19:47:44"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/5170d849604617577c466f9ddbc70c6a"
  from="Chet Murthy &lt;chet@w...&gt;"
  author="Chet Murthy"
  date="2002-12-12T00:29:37"
  subject="Re: [Caml-list] Resource acquisition is initialization ">
</msg>
<msg 
  url="2002/12/2820617a735026a0db6d33ccaaf53c59"
  from="Alessandro Baretta &lt;alex@b...&gt;"
  author="Alessandro Baretta"
  date="2002-12-12T07:54:49"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/fa5147003546a7ff957dba5a5ab3012d"
  from="Brian Hurt &lt;brian.hurt@q...&gt;"
  author="Brian Hurt"
  date="2002-12-12T16:32:25"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
<msg 
  url="2002/12/4f5285419bbec1c865398ea6d1f21997"
  from="Mike Potanin &lt;potanin@m...&gt;"
  author="Mike Potanin"
  date="2002-12-13T09:08:43"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/bef5070e1bc3ca250bf2f818ad6ff8fa"
  from="David Brown &lt;caml-list@d...&gt;"
  author="David Brown"
  date="2002-12-13T17:05:51"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
</msg>
<msg 
  url="2002/12/f0675ccbe1bf6bcbf69263f410121e17"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-12-12T13:17:08"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/d9879736886f7d0799a45d28d7845728"
  from="Dmitry Bely &lt;dbely@m...&gt;"
  author="Dmitry Bely"
  date="2002-12-12T14:07:03"
  subject="Re: [Caml-list] Resource acquisition is initialization">
<msg 
  url="2002/12/5833c628ad7eb5017603c6a0f60ca7e8"
  from="Xavier Leroy &lt;xavier.leroy@i...&gt;"
  author="Xavier Leroy"
  date="2002-12-12T14:16:07"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
<msg 
  url="2002/12/1fc22ef6af0290c23b787df542ce98bc"
  from="Blair Zajac &lt;blair@o...&gt;"
  author="Blair Zajac"
  date="2002-12-12T23:59:11"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
<msg 
  url="2002/12/880189f28b91773cde73a547cf10094b"
  from="Quetzalcoatl Bradley &lt;qbradley@b...&gt;"
  author="Quetzalcoatl Bradley"
  date="2002-12-13T11:27:48"
  subject="Re: [Caml-list] Resource acquisition is initialization">
</msg>
</msg>
</msg>
</thread>

<contents>

Blair,

Perhaps, what you want is a "try_finally" for Ocaml.

E.g.

let finally f arg finf =
  let rv = try Inl(f arg) with e -&gt; Inr e
  in (try finf arg (match rv with Inl v -&gt; Some v | Inr _ -&gt; None) with e -&gt; ());
	match rv with
		Inl v -&gt; v
	  | Inr e -&gt; raise e

Now, while this code isn't the most efficient, I believe (haven't
checked the details) that with sufficient partial evaluation and some
code-rearranging which is semantics-preserving, this code becomes
efficient, albeit somewhat larger than perhaps entirely desirable.

--chet--
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners

</contents>

</message>

