<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-14000</id>
	<title>Nabble - Caml</title>
	<updated>2009-12-23T11:28:21Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/Caml-f14000.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Caml-f14000.html" />
	<subtitle type="html">Caml is a general-purpose programming language, designed with program safety and reliability in mind. It is very expressive, yet easy to learn and use. Caml supports functional, imperative, and object-oriented programming styles. It has been developed and distributed by INRIA, France's national research institute for computer science, since 1985. Caml home is &lt;a href=&quot;http://caml.inria.fr/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26906340</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] ocamlMPI on MAC OS</title>
	<published>2009-12-23T11:28:21Z</published>
	<updated>2009-12-23T11:28:21Z</updated>
	<author>
		<name>Jamie Morgenstern</name>
	</author>
	<content type="html">Thank you kindly. All good.
&lt;br&gt;&lt;br&gt;On Wed, Dec 23, 2009 at 12:02 PM, Richard Jones &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26906340&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rich@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Dec 23, 2009 at 10:21:28AM -0700, Jamie Morgenstern wrote:
&lt;br&gt;&amp;gt; &amp;gt; Maybe, but when I do
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; sudo make install
&lt;br&gt;&amp;gt; &amp;gt; Password:
&lt;br&gt;&amp;gt; &amp;gt; cp mpi.mli mpi.cmi mpi.cma mpi.cmxa mpi.a libcamlmpi.a `ocamlc
&lt;br&gt;&amp;gt; &amp;gt; -where`/ocamlmpi
&lt;br&gt;&amp;gt; &amp;gt; usage: cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file target_file
&lt;br&gt;&amp;gt; &amp;gt; cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file ...
&lt;br&gt;&amp;gt; &amp;gt; target_directory
&lt;br&gt;&amp;gt; &amp;gt; make: *** [install] Error 64
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; OK so this is a different output from what you showed us before,
&lt;br&gt;&amp;gt; and shows an error.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; What is the output of:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ocamlc -where
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; and does the directory `ocamlc -where`/ocamlmpi exist? Probably
&lt;br&gt;&amp;gt; not by the looks of it, so that directory should be created first.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Rich.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Richard Jones
&lt;br&gt;&amp;gt; Red Hat
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;[Non-text portions of this message have been removed]
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------
&lt;br&gt;&lt;br&gt;Archives up to December 31, 2008 are also downloadable at &lt;a href=&quot;http://www.connettivo.net/cntprojects/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.connettivo.net/cntprojects/ocaml_beginners/&lt;/a&gt;&lt;br&gt;The archives of the very official ocaml list (the seniors' one) can be found at &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Attachments are banned and you're asked to be polite, avoid flames etc.Yahoo! Groups Links
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To visit your group on the web, go to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; Your email settings:
&lt;br&gt;&amp;nbsp; &amp;nbsp; Individual Email | Traditional
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To change settings online go to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners/join&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners/join&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (Yahoo! ID required)
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To change settings via email:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26906340&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-digest@...&lt;/a&gt; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26906340&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-fullfeatured@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To unsubscribe from this group, send an email to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26906340&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; Your use of Yahoo! Groups is subject to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://docs.yahoo.com/info/terms/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://docs.yahoo.com/info/terms/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---ocamlMPI-on-MAC-OS-tp26903578p26906340.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26906039</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] ocamlMPI on MAC OS</title>
	<published>2009-12-23T11:02:47Z</published>
	<updated>2009-12-23T11:02:47Z</updated>
	<author>
		<name>Richard Jones-4</name>
	</author>
	<content type="html">On Wed, Dec 23, 2009 at 10:21:28AM -0700, Jamie Morgenstern wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Maybe, but when I do
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp;sudo make install
&lt;br&gt;&amp;gt; Password:
&lt;br&gt;&amp;gt; cp mpi.mli mpi.cmi mpi.cma mpi.cmxa mpi.a libcamlmpi.a `ocamlc
&lt;br&gt;&amp;gt; -where`/ocamlmpi
&lt;br&gt;&amp;gt; usage: cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file target_file
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file ...
&lt;br&gt;&amp;gt; target_directory
&lt;br&gt;&amp;gt; make: *** [install] Error 64
&lt;/div&gt;&lt;br&gt;OK so this is a different output from what you showed us before,
&lt;br&gt;and shows an error.
&lt;br&gt;&lt;br&gt;What is the output of:
&lt;br&gt;&lt;br&gt;ocamlc -where
&lt;br&gt;&lt;br&gt;and does the directory `ocamlc -where`/ocamlmpi exist? &amp;nbsp;Probably
&lt;br&gt;not by the looks of it, so that directory should be created first.
&lt;br&gt;&lt;br&gt;Rich.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Richard Jones
&lt;br&gt;Red Hat
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---ocamlMPI-on-MAC-OS-tp26903578p26906039.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26905614</id>
	<title>OTA, $139.76. Beaver Creek. Christian End. Soc., 6; Ellen R.</title>
	<published>2009-12-23T10:23:58Z</published>
	<updated>2009-12-23T10:23:58Z</updated>
	<author>
		<name>Horsch</name>
	</author>
	<content type="html">&amp;nbsp;Landfear, New Haven, Conn. &amp;quot; Caroline E. Frost, A.B., Methuen, Mass. &amp;quot;
&lt;br&gt;H. E. White, L.B., Charlotte, Mich. &amp;quot; Estelle Bloodgood, Huron, S. Dak.
&lt;br&gt;&amp;quot; Florence A. Frew, Cleveland, Ohio. &amp;quot; Louie Savery, Talladega, Ala. &amp;quot;
&lt;br&gt;Susan Sands, A.B., Belmont, Iowa. &amp;quot; Lena A. Tucker, Springboro, Pa. &amp;quot;
&lt;br&gt;Mary R. De Forest, Talladega, Ala. &amp;quot; Ruth K. Kingsley, Syracuse, N. Y. &amp;quot;
&lt;br&gt;A. B. Chalfant, Lebanon, S. Dak. &amp;quot; L. A. Pingree, Denmark, Me. Mrs. A.
&lt;br&gt;E. Foote, Omaha, Neb. MOBILE. _Minister_, ---- ---- ---- EMERSON
&lt;br&gt;INSTITUTE. _Principal._--Prof. Geo. A. Woodard, Manly, N. C. Miss Mary
&lt;br&gt;L. Nichol, Neligh, Neb. &amp;quot; Lillian J. Beecroft, Madison, Wis. &amp;quot; May Lime,
&lt;br&gt;Port Carbon, Pa. Miss M. Elisabeth Messick, Zanesville, Ohio. &amp;quot; Mary E.
&lt;br&gt;McLane, New Haven, Conn. MARION. _Minister_, Rev. William J. Larkin,
&lt;br&gt;Marion, Ala. LINCOLN NORMAL SCHOOL. _Principal._--Rev. William J.
&lt;br&gt;Larkin, Marion, Ala. Mrs. Sophia Larkin, &amp;quot; &amp;quot; Miss Nellie D. Cooley,
&lt;br&gt;North Amherst, Mass. &amp;quot; Lizzie Stapleton, Belle Plaine, Iowa. &amp;quot; M. M.
&lt;br&gt;Gates, Phoenix, N. Y. &amp;quot; Mary D. Hyde, Mazeppa, Minn. &amp;quot; Harriet M. Smith,
&lt;br&gt;Troy, Iowa. [D]MONTGOMERY. _Minister_, ---- ---- ---- ALCO AND BREWTON.
&lt;br&gt;_Minister_, Rev. J. J. Scott, Brewton, Ala. ATHENS. _Minister_, Rev. M.
&lt;br&gt;S. Jones, Athens, Ala. TRINITY SCHOOL. _Principal._--Miss Ada Louise
&lt;br&gt;Wilcox, Monroe, Mich. Miss Mary E. Perkins, Norwich, Conn. &amp;quot; May Knox,
&lt;br&gt;Chester, Mass. &amp;quot; Blanche L. Ashley, Norwood, N. Y. Mrs. L. H. Williams,
&lt;br&gt;Athens, Ala. SELMA. _Minister_, Rev. A. T. Burnell, Denver, Col. BURRELL
&lt;br&gt;SCHOOL (366 Selma St.). _Principal._--Rev. A. T. Burnell, Ph.D., Denver,
&lt;br&gt;Col. Mrs. Mary A. Burnell, B.L., &amp;quot; &amp;quot; Miss Edith M. Thatcher, Oberlin,
&lt;br&gt;Ohio. &amp;quot; Mabel M. Jones, &amp;quot; &amp;quot; &amp;quot; Ida A. Verrill, Alexandria, N. H. &amp;quot; Myra
&lt;br&gt;J. Lamb
&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Verizon Developer Community
&lt;br&gt;Take advantage of Verizon's best-in-class app development support
&lt;br&gt;A streamlined, 14 day to market process makes app distribution fast and easy
&lt;br&gt;Join now and get one step closer to millions of Verizon customers
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/verizon-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/verizon-dev2dev&lt;/a&gt;&amp;nbsp;&lt;br /&gt;_______________________________________________
&lt;br&gt;ocaml-lib-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26905614&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml-lib-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;uplifts.jpg&lt;/strong&gt; (19K) &lt;a href=&quot;http://old.nabble.com/attachment/26905614/0/uplifts.jpg&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/OCaml-Lib-f14127.html&quot; embed=&quot;fixTarget[14127]&quot; target=&quot;_top&quot; &gt;OCaml Lib&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OTA%2C-%24139.76.-Beaver-Creek.-Christian-End.-Soc.%2C-6--Ellen-R.-tp26905614p26905614.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26904928</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] ocamlMPI on MAC OS</title>
	<published>2009-12-23T09:21:28Z</published>
	<updated>2009-12-23T09:21:28Z</updated>
	<author>
		<name>Jamie Morgenstern</name>
	</author>
	<content type="html">Maybe, but when I do
&lt;br&gt;&lt;br&gt;&amp;nbsp;sudo make install
&lt;br&gt;Password:
&lt;br&gt;cp mpi.mli mpi.cmi mpi.cma mpi.cmxa mpi.a libcamlmpi.a `ocamlc
&lt;br&gt;-where`/ocamlmpi
&lt;br&gt;usage: cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file target_file
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cp [-R [-H | -L | -P]] [-fi | -n] [-pvX] source_file ...
&lt;br&gt;target_directory
&lt;br&gt;make: *** [install] Error 64
&lt;br&gt;&lt;br&gt;&lt;br&gt;this seems unenlightening. Ideas?
&lt;br&gt;&lt;br&gt;On Wed, Dec 23, 2009 at 9:40 AM, Richard Jones &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26904928&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rich@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Wed, Dec 23, 2009 at 08:28:34AM -0700, Jamie Morgenstern wrote:
&lt;br&gt;&amp;gt; &amp;gt; what should I do/ what do I need to install first?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think I looked at that carefully ... what errors? Those look
&lt;br&gt;&amp;gt; like warnings you can ignore.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Rich.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --
&lt;br&gt;&amp;gt; Richard Jones
&lt;br&gt;&amp;gt; Red Hat
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;[Non-text portions of this message have been removed]
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------
&lt;br&gt;&lt;br&gt;Archives up to December 31, 2008 are also downloadable at &lt;a href=&quot;http://www.connettivo.net/cntprojects/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.connettivo.net/cntprojects/ocaml_beginners/&lt;/a&gt;&lt;br&gt;The archives of the very official ocaml list (the seniors' one) can be found at &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Attachments are banned and you're asked to be polite, avoid flames etc.Yahoo! Groups Links
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To visit your group on the web, go to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; Your email settings:
&lt;br&gt;&amp;nbsp; &amp;nbsp; Individual Email | Traditional
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To change settings online go to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners/join&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners/join&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (Yahoo! ID required)
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To change settings via email:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26904928&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-digest@...&lt;/a&gt; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26904928&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-fullfeatured@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To unsubscribe from this group, send an email to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26904928&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; Your use of Yahoo! Groups is subject to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://docs.yahoo.com/info/terms/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://docs.yahoo.com/info/terms/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---ocamlMPI-on-MAC-OS-tp26903578p26904928.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26904470</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] ocamlMPI on MAC OS</title>
	<published>2009-12-23T08:40:14Z</published>
	<updated>2009-12-23T08:40:14Z</updated>
	<author>
		<name>Richard Jones-4</name>
	</author>
	<content type="html">On Wed, Dec 23, 2009 at 08:28:34AM -0700, Jamie Morgenstern wrote:
&lt;br&gt;&amp;gt; what should I do/ what do I need to install first?
&lt;br&gt;&lt;br&gt;I think I looked at that carefully ... what errors? &amp;nbsp;Those look
&lt;br&gt;like warnings you can ignore.
&lt;br&gt;&lt;br&gt;Rich.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Richard Jones
&lt;br&gt;Red Hat
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---ocamlMPI-on-MAC-OS-tp26903578p26904470.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26903578</id>
	<title>&quot;ocaml_beginners&quot;::[] ocamlMPI on MAC OS</title>
	<published>2009-12-23T07:28:34Z</published>
	<updated>2009-12-23T07:28:34Z</updated>
	<author>
		<name>Jamie Morgenstern</name>
	</author>
	<content type="html">Hello!
&lt;br&gt;&lt;br&gt;I get the following errors when trying to install OcamlMPI on my new macbook
&lt;br&gt;pro:
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;gcc -I`ocamlc -where`
&lt;br&gt;-I/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/include -O -g
&lt;br&gt;-Wall &amp;nbsp; -c -o init.o init.c
&lt;br&gt;gcc -I`ocamlc -where`
&lt;br&gt;-I/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/include -O -g
&lt;br&gt;-Wall &amp;nbsp; -c -o comm.o comm.c
&lt;br&gt;gcc -I`ocamlc -where`
&lt;br&gt;-I/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/include -O -g
&lt;br&gt;-Wall &amp;nbsp; -c -o msgs.o msgs.c
&lt;br&gt;msgs.c: In function 'caml_mpi_send':
&lt;br&gt;msgs.c:40: warning: implicit declaration of function
&lt;br&gt;'caml_enter_blocking_section'
&lt;br&gt;msgs.c:42: warning: implicit declaration of function
&lt;br&gt;'caml_leave_blocking_section'
&lt;br&gt;gcc -I`ocamlc -where`
&lt;br&gt;-I/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/include -O -g
&lt;br&gt;-Wall &amp;nbsp; -c -o collcomm.o collcomm.c
&lt;br&gt;collcomm.c: In function 'caml_mpi_scatter_float':
&lt;br&gt;collcomm.c:123: warning: unused variable 'len'
&lt;br&gt;collcomm.c: In function 'caml_mpi_scatter_floatarray':
&lt;br&gt;collcomm.c:145: warning: unused variable 'srclen'
&lt;br&gt;collcomm.c: In function 'caml_mpi_gather_float':
&lt;br&gt;collcomm.c:197: warning: unused variable 'reslen'
&lt;br&gt;collcomm.c: In function 'caml_mpi_allgather_float':
&lt;br&gt;collcomm.c:245: warning: unused variable 'reslen'
&lt;br&gt;gcc -I`ocamlc -where`
&lt;br&gt;-I/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/include -O -g
&lt;br&gt;-Wall &amp;nbsp; -c -o groups.o groups.c
&lt;br&gt;gcc -I`ocamlc -where`
&lt;br&gt;-I/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/include -O -g
&lt;br&gt;-Wall &amp;nbsp; -c -o utils.o utils.c
&lt;br&gt;rm -f libcamlmpi.a
&lt;br&gt;ar rc libcamlmpi.a init.o comm.o msgs.o collcomm.o groups.o utils.o
&lt;br&gt;ocamlc -c mpi.mli
&lt;br&gt;ocamlc -c mpi.ml
&lt;br&gt;File &amp;quot;mpi.ml&amp;quot;, line 329, characters 6-12:
&lt;br&gt;Warning Y: unused variable myself.
&lt;br&gt;ocamlc -a -o mpi.cma -custom mpi.cmo -cclib -lcamlmpi -ccopt
&lt;br&gt;-L/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/lib -cclib
&lt;br&gt;-lmpi
&lt;br&gt;ocamlopt -c mpi.ml
&lt;br&gt;File &amp;quot;mpi.ml&amp;quot;, line 329, characters 6-12:
&lt;br&gt;Warning Y: unused variable myself.
&lt;br&gt;ocamlopt -a -o mpi.cmxa mpi.cmx -cclib -lcamlmpi -ccopt
&lt;br&gt;-L/opt/local/var/macports/software/mpich/1.2.7p1_0/opt/local/lib -cclib
&lt;br&gt;-lmpi
&lt;br&gt;&lt;br&gt;&lt;br&gt;what should I do/ what do I need to install first?
&lt;br&gt;&lt;br&gt;Thanks,
&lt;br&gt;-Jamie
&lt;br&gt;&lt;br&gt;&lt;br&gt;[Non-text portions of this message have been removed]
&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---ocamlMPI-on-MAC-OS-tp26903578p26903578.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26902488</id>
	<title>Re: React switch with newly created events.</title>
	<published>2009-12-23T05:54:37Z</published>
	<updated>2009-12-23T05:54:37Z</updated>
	<author>
		<name>Guillaume Yziquel-4</name>
	</author>
	<content type="html">Daniel Bünzli a écrit :
&lt;br&gt;&amp;gt;&amp;gt; However, it may happen (and it does happen) that as soon as this new
&lt;br&gt;&amp;gt;&amp;gt; React.event is created, an event is fired before the React.E.switch has been
&lt;br&gt;&amp;gt;&amp;gt; executed to replace the old event by the new event.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You are creating a new update cycle inside another update cycle and
&lt;br&gt;&amp;gt; this is disallowed. No primitives are allowed to update in an update
&lt;br&gt;&amp;gt; cycle (to be precise unless the primitive does not belong to the
&lt;br&gt;&amp;gt; dependency graph of the update cycle).
&lt;br&gt;&lt;br&gt;No, this is not the case. There's only one update cycle. I was confused 
&lt;br&gt;and sked the question too quickly. It works perfectly...
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Guillaume Yziquel
&lt;br&gt;&lt;a href=&quot;http://yziquel.homelinux.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yziquel.homelinux.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/React-switch-with-newly-created-events.-tp26901514p26902488.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26902105</id>
	<title>Re: React switch with newly created events.</title>
	<published>2009-12-23T05:23:50Z</published>
	<updated>2009-12-23T05:23:50Z</updated>
	<author>
		<name>Daniel Bünzli-2</name>
	</author>
	<content type="html">&amp;gt; However, it may happen (and it does happen) that as soon as this new
&lt;br&gt;&amp;gt; React.event is created, an event is fired before the React.E.switch has been
&lt;br&gt;&amp;gt; executed to replace the old event by the new event.
&lt;br&gt;&lt;br&gt;You are creating a new update cycle inside another update cycle and
&lt;br&gt;this is disallowed. No primitives are allowed to update in an update
&lt;br&gt;cycle (to be precise unless the primitive does not belong to the
&lt;br&gt;dependency graph of the update cycle).
&lt;br&gt;&lt;br&gt;&amp;gt; -1- clutter my code with mutexes to synchronise the whole stuff, with the
&lt;br&gt;&amp;gt; disadvantage that there is not, to my knowledge, to execute a function just
&lt;br&gt;&amp;gt; after the React.E.switch function has effectively switched events.
&lt;br&gt;&lt;br&gt;I don't understand what you are saying (a word must be missing). But
&lt;br&gt;yes you need to serialize the updates, see
&lt;br&gt;&lt;a href=&quot;http://erratique.ch/software/react/doc/React#update&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://erratique.ch/software/react/doc/React#update&lt;/a&gt;&amp;nbsp;but I guess you
&lt;br&gt;already know that.
&lt;br&gt;.
&lt;br&gt;&amp;gt; -2- look for a way in React to do it within React only. Which would mean to
&lt;br&gt;&amp;gt; somehow implement within React a way to switch to a newly created event,
&lt;br&gt;&amp;gt; without race conditions.
&lt;br&gt;&lt;br&gt;You can perfectly switch to a newly created event, primitive or not.
&lt;br&gt;If the event is not a primitive it may even have an occurence in the
&lt;br&gt;same update cycle (e.g. if the dynamic creation depends on the
&lt;br&gt;updating primitive itself). However if it's a primitive event it
&lt;br&gt;cannot have an occurence in the same update cycle as this would start
&lt;br&gt;a new update cycle and this is disallowed.
&lt;br&gt;&lt;br&gt;Daniel
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/React-switch-with-newly-created-events.-tp26901514p26902105.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26901514</id>
	<title>React switch with newly created events.</title>
	<published>2009-12-23T04:37:14Z</published>
	<updated>2009-12-23T04:37:14Z</updated>
	<author>
		<name>Guillaume Yziquel-4</name>
	</author>
	<content type="html">Hello.
&lt;br&gt;&lt;br&gt;I've recently been working again of React, and I have the following 
&lt;br&gt;question. Current code is below.
&lt;br&gt;&lt;br&gt;I'm creating an event with React.E.switch, that creates a new event 
&lt;br&gt;through the schedule function, and this new events replaces the old 
&lt;br&gt;event. React.E.switch is used for this replacement.
&lt;br&gt;&lt;br&gt;React.E.switch initial_event (React.E.map begin function () -&amp;gt; schedule 
&lt;br&gt;(rescheduler ()) end tick)
&lt;br&gt;&lt;br&gt;However, it may happen (and it does happen) that as soon as this new 
&lt;br&gt;React.event is created, an event is fired before the React.E.switch has 
&lt;br&gt;been executed to replace the old event by the new event.
&lt;br&gt;&lt;br&gt;This is due to Lwt concurrency.
&lt;br&gt;&lt;br&gt;I therefore have two potential solutions:
&lt;br&gt;&lt;br&gt;-1- clutter my code with mutexes to synchronise the whole stuff, with 
&lt;br&gt;the disadvantage that there is not, to my knowledge, to execute a 
&lt;br&gt;function just after the React.E.switch function has effectively switched 
&lt;br&gt;events.
&lt;br&gt;&lt;br&gt;-2- look for a way in React to do it within React only. Which would mean 
&lt;br&gt;to somehow implement within React a way to switch to a newly created 
&lt;br&gt;event, without race conditions.
&lt;br&gt;&lt;br&gt;What would you do in this context?
&lt;br&gt;&lt;br&gt;Here's the code:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; let reschedule ?attach:(f = begin fun x -&amp;gt; x end) start rescheduler =
&lt;br&gt;&amp;gt; &amp;nbsp; (* The let define tick in E.fix define is the proper way to
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;implement recursive events. define has type React.event -&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;(React.event * React.event) and its argument is a placeholder
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;for the event at time t-dt. *)
&lt;br&gt;&amp;gt; &amp;nbsp; let attach initial_event =
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; let define tick =
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; (* Here is something I worry about: It is possible that the event created
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;with the schedule function is fired before it is attached to the switched
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;event, hence losing an event, and stalling the whole regular event. *)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; let tick' = React.E.switch initial_event (React.E.map
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; begin function () -&amp;gt; schedule (rescheduler ()) end tick) in
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; tick', tick'
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; in f (React.E.fix define) in
&lt;br&gt;&amp;gt; &amp;nbsp; schedule ~attach:attach start
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; let regular_schedule ?attach:(f = begin fun x -&amp;gt; x end) start period =
&lt;br&gt;&amp;gt; &amp;nbsp; reschedule ~attach:f start (fun () -&amp;gt; Calendar.add (Calendar.now ()) period)
&lt;/div&gt;&lt;br&gt;-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Guillaume Yziquel
&lt;br&gt;&lt;a href=&quot;http://yziquel.homelinux.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yziquel.homelinux.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/React-switch-with-newly-created-events.-tp26901514p26901514.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26901400</id>
	<title>Patch to add binding for gtk_tree_view_get_visible_range</title>
	<published>2009-12-23T04:24:20Z</published>
	<updated>2009-12-23T04:24:20Z</updated>
	<author>
		<name>Mike Spivey</name>
	</author>
	<content type="html">Please eyeball the C primitive before applying this patch. &amp;nbsp;Je ne sais
&lt;br&gt;pas tres bien comment vivre en harmonie avec le collecteur de garbage.
&lt;br&gt;&lt;br&gt;-- Mike
&lt;br&gt;&lt;br&gt;&lt;br&gt;Index: src/gTree.mli
&lt;br&gt;===================================================================
&lt;br&gt;--- src/gTree.mli	(revision 1495)
&lt;br&gt;+++ src/gTree.mli	(revision 1496)
&lt;br&gt;@@ -398,6 +398,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;x:int -&amp;gt; y:int -&amp;gt; (tree_path * view_column * int * int) option
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;method get_cell_area :
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;?path:tree_path -&amp;gt; ?col:view_column -&amp;gt; unit -&amp;gt; Gdk.Rectangle.t
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;method get_visible_range : unit -&amp;gt; (tree_path * tree_path) option
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;method hadjustment : GData.adjustment
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;method headers_visible : bool
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;method insert_column : view_column -&amp;gt; int -&amp;gt; int
&lt;br&gt;Index: src/ml_gtktree.c
&lt;br&gt;===================================================================
&lt;br&gt;--- src/ml_gtktree.c	(revision 1495)
&lt;br&gt;+++ src/ml_gtktree.c	(revision 1496)
&lt;br&gt;@@ -1578,3 +1578,17 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;nbsp; &amp;nbsp;return Val_unit;)
&lt;br&gt;&amp;nbsp;}
&lt;br&gt;+
&lt;br&gt;+CAMLprim value ml_gtk_tree_view_get_visible_range(value treeview) {
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; CAMLparam1(treeview);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; CAMLlocal1(result);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; GtkTreePath *startp, *endp;
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; if (! gtk_tree_view_get_visible_range(GtkTreeView_val(treeview),
&lt;br&gt;+					 &amp;nbsp; &amp;startp, &amp;endp))
&lt;br&gt;+	 &amp;nbsp;CAMLreturn(Val_unit);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; result = alloc_tuple(2);
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; Store_field(result, 0, Val_GtkTreePath(startp));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; Store_field(result, 1, Val_GtkTreePath(endp));
&lt;br&gt;+ &amp;nbsp; &amp;nbsp; CAMLreturn(ml_some(result));
&lt;br&gt;+}
&lt;br&gt;+	 &amp;nbsp;
&lt;br&gt;Index: src/gtkTree.props
&lt;br&gt;===================================================================
&lt;br&gt;--- src/gtkTree.props	(revision 1495)
&lt;br&gt;+++ src/gtkTree.props	(revision 1496)
&lt;br&gt;@@ -36,6 +36,7 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;quot;hover-selection&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp;gboolean &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: Read / Write / NoSet
&lt;br&gt;&amp;nbsp; &amp;nbsp;(* new properties in GTK+ 2.12 *)
&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;quot;tooltip-column&amp;quot; &amp;nbsp; &amp;nbsp; &amp;nbsp; gint &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Read / Write
&lt;br&gt;+ &amp;nbsp;method get_visible_range : &amp;quot;(tree_path * tree_path) option&amp;quot;
&lt;br&gt;&amp;nbsp; &amp;nbsp;signal columns_changed
&lt;br&gt;&amp;nbsp; &amp;nbsp;signal cursor_changed
&lt;br&gt;&amp;nbsp; &amp;nbsp;signal expand_collapse_cursor_row :
&lt;br&gt;Index: src/gTree.ml
&lt;br&gt;===================================================================
&lt;br&gt;--- src/gTree.ml	(revision 1495)
&lt;br&gt;+++ src/gTree.ml	(revision 1496)
&lt;br&gt;@@ -419,6 +419,8 @@
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;| None -&amp;gt; None
&lt;br&gt;&amp;nbsp; &amp;nbsp;method get_cell_area ?path ?col () =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;TreeView.get_cell_area obj ?path ?col:(Gaux.may_map as_column col) ()
&lt;br&gt;+ &amp;nbsp;method get_visible_range () =
&lt;br&gt;+ &amp;nbsp; &amp;nbsp;TreeView.get_visible_range obj
&lt;br&gt;&amp;nbsp; &amp;nbsp;method set_row_separator_func fo =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;TreeView.set_row_separator_func obj 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Gaux.may_map (fun f m -&amp;gt; f (new model m)) fo)
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Lablgtk mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26901400&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lablgtk@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Lablgtk---France-f22132.html&quot; embed=&quot;fixTarget[22132]&quot; target=&quot;_top&quot; &gt;Lablgtk - France&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Patch-to-add-binding-for-gtk_tree_view_get_visible_range-tp26901400p26901400.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26901379</id>
	<title>Problem with installation</title>
	<published>2009-12-23T04:08:16Z</published>
	<updated>2009-12-23T04:08:16Z</updated>
	<author>
		<name>Alain et Domitille</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.5897&quot; name=GENERATOR&gt;

&lt;/HEAD&gt;
&lt;BODY bgColor=#ffffff&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Hello,&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;I've just installed the Lablgtk package in my PC 
running windows XP.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;I have no trouble with GTK runtime but with 
Environnement Variables.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;When I try to lunch ocaml -I lablgtk2 
labgtk.cma&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;the answer concern a problem with FLEXDLL_RELOCATE 
et a problem to install dlllalblgtk.dll.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;There is no mention of FLEXDLL_RELOCATE in the 
readme file.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;I want to know what are the environement variables 
required on windows platform ?&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Thank you&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Alan&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;Lablgtk mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26901379&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Lablgtk@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/lablgtk&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Lablgtk---France-f22132.html&quot; embed=&quot;fixTarget[22132]&quot; target=&quot;_top&quot; &gt;Lablgtk - France&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Problem-with-installation-tp26901379p26901379.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26900851</id>
	<title>Re: Re: OCaml is broken</title>
	<published>2009-12-23T03:25:37Z</published>
	<updated>2009-12-23T03:25:37Z</updated>
	<author>
		<name>Erik Rigtorp</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 14:27, Gerd Stolpmann &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26900851&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gerd@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Am Dienstag, den 22.12.2009, 13:04 +0100 schrieb Erik Rigtorp:
&lt;br&gt;&amp;gt;&amp;gt; On Mon, Dec 21, 2009 at 23:50, Erik Rigtorp &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26900851&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Some IPC Benchmarks, Solaris 10 on a quad core Intel Core2 Duo. The
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; benchmarks are running on a cpuset with 1 core. I measure the time
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; from sending in one process until the other process receives the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; message. So a context switch and the message passing is included in
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; the measurements.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Max/Min/Avg
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; * Pipes: 28205/5973/6259
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; * Unix domain sockets: 44256/7748/8153
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; * SYSv message queues: 19197/5895/6173
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; * Posix message queues: 37399/10965/11303
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; * TCP on loopback: 29017/7471/7885
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; So the latency is roughly 10µs for all these solutions. That latency
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; is pretty high and would be several times the processing time of the
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; message itself.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Some more benchmarks:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Max/Min/Avg
&lt;br&gt;&amp;gt;&amp;gt; * Spinlocking shm: 50897/403/761  (This one utilizes multiple cores,
&lt;br&gt;&amp;gt;&amp;gt; since one core is just burning while waiting for data)
&lt;br&gt;&amp;gt;&amp;gt; * Pthreads mutex shm: 27582/5246/6577
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Forgot to say that all measurements are in nanoseconds.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; That's for communication between processes, right? How would the picture
&lt;br&gt;&amp;gt; be different (especially comparing the latter two) if you do message
&lt;br&gt;&amp;gt; passing between threads? If I remember correctly, threads are more
&lt;br&gt;&amp;gt; light-weight in Solaris than processes. That could also affect context
&lt;br&gt;&amp;gt; switching times, and scheduler decisions.
&lt;/div&gt;&lt;br&gt;With a system supporting green threads/tasklets/erlang processes over
&lt;br&gt;multiple cores you can have 1µs message passing latencies without busy
&lt;br&gt;waiting. I'll checkout the thread message passing too, but probably
&lt;br&gt;not until after new years.
&lt;br&gt;&lt;br&gt;&amp;gt; Do you have source code? I could also run in on Linux, for comparison.
&lt;br&gt;&lt;br&gt;I'll have that approved by my company first. It would actually be
&lt;br&gt;interesting to create a open source multiplatform IPC message passing
&lt;br&gt;benchmark.
&lt;br&gt;&lt;br&gt;Erik
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OCaml-is-broken-tp26853708p26900851.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26895993</id>
	<title>Re: basic question about Functors</title>
	<published>2009-12-22T15:38:24Z</published>
	<updated>2009-12-22T15:38:24Z</updated>
	<author>
		<name>Eric Cooper</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 05:48:57PM -0500, Keith Sheppard wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I've looked through the Functors section of the ocaml tutorial
&lt;br&gt;&amp;gt; (&lt;a href=&quot;http://www.ocaml-tutorial.org/modules&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ocaml-tutorial.org/modules&lt;/a&gt;) and so I see how I can declare
&lt;br&gt;&amp;gt; a StringMap like:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; module StringMap = Map.Make(String);;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Now I can define a function like:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; remove_fish = StringMap.remove &amp;quot;fish&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; What I'm confused about is what type signature I can use in the mli
&lt;br&gt;&amp;gt; file if I want to make the remove_fish function public...
&lt;/div&gt;&lt;br&gt;The top level (or &amp;quot;ocaml -i&amp;quot;) is your friend:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; # module StringMap = Map.Make(String);;
&lt;br&gt;&amp;nbsp; &amp;nbsp; module StringMap :
&lt;br&gt;&amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;nbsp; &amp;nbsp; # let remove_fish = StringMap.remove &amp;quot;fish&amp;quot;;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; val remove_fish : '_a StringMap.t -&amp;gt; '_a StringMap.t = &amp;lt;fun&amp;gt;
&lt;br&gt;&lt;br&gt;You could use this type signature as-is, but the '_a type variables are more
&lt;br&gt;restrictive than necessary due to the &amp;quot;value restriction&amp;quot;. To make it
&lt;br&gt;fully general, use &amp;quot;eta expansion&amp;quot;:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; # let remove_fish m = StringMap.remove &amp;quot;fish&amp;quot; m;; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; val remove_fish : 'a StringMap.t -&amp;gt; 'a StringMap.t = &amp;lt;fun&amp;gt;
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Eric Cooper &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; e c c @ c m u . e d u
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/basic-question-about-Functors-tp26895511p26895993.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26895511</id>
	<title>basic question about Functors</title>
	<published>2009-12-22T14:48:57Z</published>
	<updated>2009-12-22T14:48:57Z</updated>
	<author>
		<name>Keith Sheppard</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;I'm still figuring out OCaml syntax and I have a very basic question.
&lt;br&gt;I've looked through the Functors section of the ocaml tutorial
&lt;br&gt;(&lt;a href=&quot;http://www.ocaml-tutorial.org/modules&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ocaml-tutorial.org/modules&lt;/a&gt;) and so I see how I can declare
&lt;br&gt;a StringMap like:
&lt;br&gt;&lt;br&gt;&amp;gt; module StringMap = Map.Make(String);;
&lt;br&gt;&lt;br&gt;Now I can define a function like:
&lt;br&gt;&lt;br&gt;&amp;gt; remove_fish = StringMap.remove &amp;quot;fish&amp;quot;
&lt;br&gt;&lt;br&gt;What I'm confused about is what type signature I can use in the mli
&lt;br&gt;file if I want to make the remove_fish function public...
&lt;br&gt;&lt;br&gt;Thanks in advance
&lt;br&gt;Keith
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/basic-question-about-Functors-tp26895511p26895511.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26895133</id>
	<title>[SPAM] You have new mail from Olga</title>
	<published>2009-12-22T14:13:34Z</published>
	<updated>2009-12-22T14:13:34Z</updated>
	<author>
		<name>OCaml Lib mailing list</name>
	</author>
	<content type="html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta content=&quot;text/html; charset=iso-8859-1&quot; http-equiv=&quot;Content-Type&quot; /&gt;
&lt;title&gt;
Newsletter&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#ffffff&quot; style=&quot;text-align: center&quot;&gt;
Dear member ocaml-lib-devel of our Dating site!&lt;br&gt;
You have 12 unread messages from ladies.&lt;br&gt;
Please, check them here:&lt;br&gt;
&lt;br&gt;
&lt;a href=&quot;http://cid-302db320d96494d3.spaces.live.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;[ Read Message(-s) ]&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
Best wishes to you,&lt;br&gt;
administrator&lt;br&gt;
Olga
&lt;/body&gt;
&lt;/html&gt;

&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Verizon Developer Community
&lt;br&gt;Take advantage of Verizon's best-in-class app development support
&lt;br&gt;A streamlined, 14 day to market process makes app distribution fast and easy
&lt;br&gt;Join now and get one step closer to millions of Verizon customers
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/verizon-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/verizon-dev2dev&lt;/a&gt;&amp;nbsp;&lt;br /&gt;_______________________________________________
&lt;br&gt;ocaml-lib-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26895133&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml-lib-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/OCaml-Lib-f14127.html&quot; embed=&quot;fixTarget[14127]&quot; target=&quot;_top&quot; &gt;OCaml Lib&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-SPAM--You-have-new-mail-from-Olga-tp26895133p26895133.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26894896</id>
	<title>Re: obj.magic for polymorphic record fields</title>
	<published>2009-12-22T13:49:35Z</published>
	<updated>2009-12-22T13:49:35Z</updated>
	<author>
		<name>Boris Yakobowski</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 2:35 PM, Goswin von Brederlow &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26894896&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;goswin-v-b@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; But the type inference should deduce that in
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (Obj.magic fn) x
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; the 'a is actually 'b -&amp;gt; 'c as I am applying an argument to it.
&lt;br&gt;&lt;br&gt;Sure, and it does. But it remains that the principal type of
&lt;br&gt;(Obj.magic fn) is 'a, without any other constraint on 'a. The fact
&lt;br&gt;that you use it with type 'b -&amp;gt; 'c for some 'b and 'c is irrelevant,
&lt;br&gt;and the type-checker can safely draw conclusions from the principal
&lt;br&gt;type. (This is similar to considering List.map (fun x -&amp;gt; x). It has
&lt;br&gt;type 'a list -&amp;gt; 'a list, even though it is used with type int list -&amp;gt;
&lt;br&gt;int list if you apply it to [1].)
&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Boris
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re-2-%3A-obj.magic-for-polymorphic-record-fields-tp26866102p26894896.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26894391</id>
	<title>Re: Looking for information regarding use of OCaml in  scientific computing and simulation</title>
	<published>2009-12-22T13:11:24Z</published>
	<updated>2009-12-22T13:11:24Z</updated>
	<author>
		<name>Mike Lin-2</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 2:49 PM, Jon Harrop &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26894391&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jon@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; Sure but it is worth remembering that distributed parallelism across clusters
&lt;br&gt;&amp;gt; is a tiny niche compared to multicores.
&lt;br&gt;&lt;br&gt;I think the balance is slightly different than this in
&lt;br&gt;scientific/research computing (the original subject of this thread).
&lt;br&gt;At least in the U.S., a ten-page proposal will garner at least a
&lt;br&gt;million core-hours at a TeraGrid site for pretty much any non-crackpot
&lt;br&gt;academic project, free of charge (the systems are funded by the
&lt;br&gt;gov't). NSF graduate fellows get like 100k core-hours just to mess
&lt;br&gt;around, no PI and no particular project proposal needed.
&lt;br&gt;&lt;br&gt;The infrastructure, documentation, and tech support at the TeraGrid
&lt;br&gt;sites generally assume MPI-based jobs, and give you access to [tens
&lt;br&gt;of] thousands of cores. That's a pretty compelling resource if the
&lt;br&gt;alternative is the relatively measly theoretical speedup from a
&lt;br&gt;multicore (8x, etc.).
&lt;br&gt;&lt;br&gt;Mike
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Looking-for-information-regarding-use-of-OCaml-in-scientific-computing-and-simulation-tp26510892p26894391.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26893586</id>
	<title>[SPAM]</title>
	<published>2009-12-22T12:08:41Z</published>
	<updated>2009-12-22T12:08:41Z</updated>
	<author>
		<name>Apa</name>
	</author>
	<content type="html">&lt;br&gt;&lt;br /&gt; &lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;This SF.Net email is sponsored by the Verizon Developer Community
&lt;br&gt;Take advantage of Verizon's best-in-class app development support
&lt;br&gt;A streamlined, 14 day to market process makes app distribution fast and easy
&lt;br&gt;Join now and get one step closer to millions of Verizon customers
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/verizon-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/verizon-dev2dev&lt;/a&gt;&amp;nbsp;&lt;br /&gt;_______________________________________________
&lt;br&gt;ocaml-lib-devel mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26893586&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml-lib-devel@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel&lt;/a&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://old.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;cataclinal.jpg&lt;/strong&gt; (19K) &lt;a href=&quot;http://old.nabble.com/attachment/26893586/0/cataclinal.jpg&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/OCaml-Lib-f14127.html&quot; embed=&quot;fixTarget[14127]&quot; target=&quot;_top&quot; &gt;OCaml Lib&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-SPAM--tp26893586p26893586.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26900596</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] help installing 64-bit ocaml under  snowleopard (MacOS 10.6.2)</title>
	<published>2009-12-22T11:28:17Z</published>
	<updated>2009-12-22T11:28:17Z</updated>
	<author>
		<name>Martin DeMello</name>
	</author>
	<content type="html">As a recent convert to godi, i second this. Everything just works.
&lt;br&gt;&lt;br&gt;martin
&lt;br&gt;&lt;br&gt;On Tue, Dec 22, 2009 at 11:36 PM, Ashish Agarwal &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26900596&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;agarwal1975@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I would recommend GODI &lt;a href=&quot;http://godi.camlcity.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://godi.camlcity.org&lt;/a&gt;. In addition to installing
&lt;br&gt;&amp;gt; base ocaml, you will be able to install many libraries trivially.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On Tue, Dec 22, 2009 at 7:08 AM, Hugo Ferreira &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26900596&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hmf@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Markus W. Weißmann wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; On 22 Dec 2009, at 07:38, darooha wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; I'm trying to get ocaml-3.11.1 installed on
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; macos 10.6.2 (snowleopard). I've got the 32 bit version working
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; but I want it running in 64 bit, which snowleopard supports.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; I upgraded the machine recently form leopard to snowleopard.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; And I can't seem to get a 64 bit version of ocaml installed.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; For example, I did this configuration:
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt; ./configure -cc &amp;quot;gcc -m64&amp;quot; -as &amp;quot;as -arch i386&amp;quot; -aspp &amp;quot;gcc -m64 -c&amp;quot;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; you need '-arch x86_64' -- '-arch i386' is the 32 bit architecture (which
&lt;br&gt;&amp;gt;&amp;gt; then collides with the '-m64' later on);
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; to make your life easier, you could also use a package manager like
&lt;br&gt;&amp;gt;&amp;gt; macports (&lt;a href=&quot;http://www.macports.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.macports.org/&lt;/a&gt;) -- if this suits your needs.
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Or you can try GODI:
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://godi.camlcity.org/godi/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://godi.camlcity.org/godi/index.html&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; Regards,
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt; -Markus
&lt;br&gt;&amp;gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; [Non-text portions of this message have been removed]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ------------------------------------
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Archives up to December 31, 2008 are also downloadable at &lt;a href=&quot;http://www.connettivo.net/cntprojects/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.connettivo.net/cntprojects/ocaml_beginners/&lt;/a&gt;&lt;br&gt;&amp;gt; The archives of the very official ocaml list (the seniors' one) can be found at &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;&amp;gt; Attachments are banned and you're asked to be polite, avoid flames etc.Yahoo! Groups Links
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---help-installing-64-bit-ocaml-under-snowleopard-%28MacOS-10.6.2%29-tp26884552p26900596.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26892350</id>
	<title>Re: Looking for information regarding use of OCaml in scientific computing and simulation</title>
	<published>2009-12-22T11:19:10Z</published>
	<updated>2009-12-22T11:19:10Z</updated>
	<author>
		<name>Jon Harrop</name>
	</author>
	<content type="html">On Tuesday 22 December 2009 13:11:58 Eray Ozkural wrote:
&lt;br&gt;&amp;gt; On Tue, Dec 22, 2009 at 6:40 AM, Linas Vepstas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26892350&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linasvepstas@...&lt;/a&gt;&amp;gt; 
&lt;br&gt;wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; However, if you are  interested in merely using the system
&lt;br&gt;&amp;gt; &amp;gt; to do your &amp;quot;real&amp;quot; work, then writing message-passing code
&lt;br&gt;&amp;gt; &amp;gt; is an utter waste of time -- its difficult, time-consuming, error
&lt;br&gt;&amp;gt; &amp;gt; prone, hard to balance and optimize &amp; tune, works well only
&lt;br&gt;&amp;gt; &amp;gt; for &amp;quot;embarrasingly parallel&amp;quot; code, etc.  Even the evil
&lt;br&gt;&amp;gt; &amp;gt; slow-down of NUMA is often better than trying to
&lt;br&gt;&amp;gt; &amp;gt; performance-tune a message-passing system.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Message passing doesn't work well only for embarrassingly parallel
&lt;br&gt;&amp;gt; code.
&lt;/div&gt;&lt;br&gt;Message passing doesn't necessarily work well for embarrassingly-parallel 
&lt;br&gt;problems either because you cannot use in-place algorithms and scatter and 
&lt;br&gt;gather are O(n).
&lt;br&gt;&lt;br&gt;&amp;gt; For instance, you can implement the aforementioned parallel 
&lt;br&gt;&amp;gt; quicksort rather easily,
&lt;br&gt;&lt;br&gt;But you cannot improve performance easily and performance is the *only* 
&lt;br&gt;motivation for parallelism. So the fact that you can make naive use of 
&lt;br&gt;message passing easily from OCaml is useless in practice.
&lt;br&gt;&lt;br&gt;&amp;gt; What message passing really is, it is the perfect match to a
&lt;br&gt;&amp;gt; distributed memory architecture. Since, as you suggest, multicore
&lt;br&gt;&amp;gt; chips have more or less a shared memory architecture, message passing
&lt;br&gt;&amp;gt; is indeed not a good match.
&lt;br&gt;&lt;br&gt;Yes. Conversely, shared memory is effectively a hardware accelerated form of 
&lt;br&gt;message passing.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Let me put it this way: suggesting that programmers can
&lt;br&gt;&amp;gt; &amp;gt; write their own message-passing system is kind of like
&lt;br&gt;&amp;gt; &amp;gt; telling them that they can write their own garbage-collection
&lt;br&gt;&amp;gt; &amp;gt; system, or design their own closures, or they can go
&lt;br&gt;&amp;gt; &amp;gt; create their own type system. Of course they can ... and
&lt;br&gt;&amp;gt; &amp;gt; if they wanted to do that, they would be programming in
&lt;br&gt;&amp;gt; &amp;gt; C or assembly, and would probably be designing new
&lt;br&gt;&amp;gt; &amp;gt; languages.  Cause by the time you get done with message
&lt;br&gt;&amp;gt; &amp;gt; passing, you've created a significant and rich programming
&lt;br&gt;&amp;gt; &amp;gt; system that resembles a poorly-designed language... been
&lt;br&gt;&amp;gt; &amp;gt; there, done that.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; For a functional language, am I right in expecting a high-level and
&lt;br&gt;&amp;gt; clean interface for explicit parallelism?
&lt;/div&gt;&lt;br&gt;I think that is a perfectly reasonable thing to expect but you still need to 
&lt;br&gt;understand its characteristics and how to leverage them in order to make good 
&lt;br&gt;use of the feature.
&lt;br&gt;&lt;br&gt;&amp;gt; I suppose a &amp;quot;spawn&amp;quot; directive would not be very hard to implement.
&lt;br&gt;&lt;br&gt;You cannot implement it with useful efficiency in OCaml.
&lt;br&gt;&lt;br&gt;&amp;gt; Message Passing/Distributed Memory can also be accommodated I suppose.
&lt;br&gt;&lt;br&gt;Sure but it is worth remembering that distributed parallelism across clusters 
&lt;br&gt;is a tiny niche compared to multicores.
&lt;br&gt;&lt;br&gt;&amp;gt; OcamlP3l looks pretty cool. Parallel combinators? Definitely what I'm
&lt;br&gt;&amp;gt; talking about, as usual the future is here with ocaml ;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://ocamlp3l.inria.fr/eng.htm&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ocamlp3l.inria.fr/eng.htm&lt;/a&gt;&lt;br&gt;&lt;br&gt;Try solving some real problems with OCamlP3L and F#. I'm sure you'll agree 
&lt;br&gt;that the OCaml approach is certainly not the future.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dr Jon Harrop, Flying Frog Consultancy Ltd.
&lt;br&gt;&lt;a href=&quot;http://www.ffconsultancy.com/?e&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ffconsultancy.com/?e&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Looking-for-information-regarding-use-of-OCaml-in-scientific-computing-and-simulation-tp26510892p26892350.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26891979</id>
	<title>Re: Re: multicore wish</title>
	<published>2009-12-22T11:12:14Z</published>
	<updated>2009-12-22T11:12:14Z</updated>
	<author>
		<name>Jon Harrop</name>
	</author>
	<content type="html">On Tuesday 22 December 2009 18:02:32 Edgar Friendly wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 12/22/2009 01:12 PM, Jon Harrop wrote:
&lt;br&gt;&amp;gt; &amp;gt; On Tuesday 22 December 2009 13:09:27 Goswin von Brederlow wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; The advantage with ocaml though is that you never have pointers into a
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; structure. Makes thinks a lot simpler for the GC and avoids large
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; overheads in memory.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; I don't understand what you mean by OCaml &amp;quot;never has pointers into a
&lt;br&gt;&amp;gt; &amp;gt; structure&amp;quot;. Half the problem with OCaml is that OCaml almost always uses
&lt;br&gt;&amp;gt; &amp;gt; pointers and the programmer has no choice, e.g. for complex numbers.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think he means that ocaml structs (records, tuples) will only ever
&lt;br&gt;&amp;gt; have pointers pointing to their beginning - you can't have a pointer to
&lt;br&gt;&amp;gt; somewhere in the middle of a structure.
&lt;/div&gt;&lt;br&gt;If so then I do not understand the relevance. You cannot have pointers into a 
&lt;br&gt;structure in F# or HLVM either...
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dr Jon Harrop, Flying Frog Consultancy Ltd.
&lt;br&gt;&lt;a href=&quot;http://www.ffconsultancy.com/?e&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ffconsultancy.com/?e&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OCaml-is-broken-tp26853708p26891979.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26891885</id>
	<title>Re: Re: multicore wish</title>
	<published>2009-12-22T11:09:34Z</published>
	<updated>2009-12-22T11:09:34Z</updated>
	<author>
		<name>Jon Harrop</name>
	</author>
	<content type="html">On Tuesday 22 December 2009 13:09:27 Goswin von Brederlow wrote:
&lt;br&gt;&amp;gt; Jon Harrop &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26891885&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jon@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&amp;gt; &amp;gt; 1. The array &amp;quot;a&amp;quot; is just an ordinary array of any type of values on the
&lt;br&gt;&amp;gt; &amp;gt; shared heap in F# but, for generality in OCaml, this must be both the
&lt;br&gt;&amp;gt; &amp;gt; underlying ordinary data and a manually-managed shared big array of
&lt;br&gt;&amp;gt; &amp;gt; indices into the ordinary data where the indices get sorted while the
&lt;br&gt;&amp;gt; &amp;gt; original data remain in place until they are permuted at the end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Unless you have a primitive type that isn't a pointer.
&lt;br&gt;&lt;br&gt;In OCaml, you would need to write a custom quicksort optimized for that 
&lt;br&gt;particular type. In F#, the generic version just works and works efficiently.
&lt;br&gt;&lt;br&gt;&amp;gt; The advantage with ocaml though is that you never have pointers into a
&lt;br&gt;&amp;gt; structure. Makes thinks a lot simpler for the GC and avoids large
&lt;br&gt;&amp;gt; overheads in memory.
&lt;br&gt;&lt;br&gt;I don't understand what you mean by OCaml &amp;quot;never has pointers into a 
&lt;br&gt;structure&amp;quot;. Half the problem with OCaml is that OCaml almost always uses 
&lt;br&gt;pointers and the programmer has no choice, e.g. for complex numbers.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; 2. The sorted subarrays are contiguous in memory and, at some
&lt;br&gt;&amp;gt; &amp;gt; subdivision, will fit into L2 cache. So F# offers optimal locality. In
&lt;br&gt;&amp;gt; &amp;gt; contrast, there is no locality whatsoever in the OCaml code and most
&lt;br&gt;&amp;gt; &amp;gt; accesses into the unsorted original array will incur cache misses right
&lt;br&gt;&amp;gt; &amp;gt; up to main memory. So the OCaml approach does not scale as well and will
&lt;br&gt;&amp;gt; &amp;gt; never see superlinear speedup because it cannot be cache friendly.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On the other hand swapping two elements in the array has a constant
&lt;br&gt;&amp;gt; cost no matter what size they have. At some size there will be a break
&lt;br&gt;&amp;gt; even point where copying the data costs more than the cache misses and
&lt;br&gt;&amp;gt; with increasing size the cache won't help F# so much either.
&lt;/div&gt;&lt;br&gt;In theory, yes. In practice, that threshold is far larger than any value type 
&lt;br&gt;that a real program would use so it is of no practical concern. Moreover, F# 
&lt;br&gt;gives the programmer control over whether data are unboxed (value types) or 
&lt;br&gt;boxed (reference types) anyway. In contrast, OCaml is tied to a few value 
&lt;br&gt;types that are hard-coded into the GC.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; 3. Child tasks are likely to be executed on the same core as their parent
&lt;br&gt;&amp;gt; &amp;gt; and use a subset of their parent's data in F#, so they offer the best
&lt;br&gt;&amp;gt; &amp;gt; possible locality. In contrast, child processes are likely to be executed
&lt;br&gt;&amp;gt; &amp;gt; on another core in OCaml and offer the worst possible locality.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But, if I understood you right, you first fork one process per
&lt;br&gt;&amp;gt; core.
&lt;br&gt;&lt;br&gt;No, in OCaml I fork every child. That is the only transparent way to give the 
&lt;br&gt;child a coherent view of the heap but it is extremely slow (~1ms):
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;quot;F# can do 60MFLOPS of computation in the time it takes OCaml 
&lt;br&gt;to fork a single process&amp;quot; -
&lt;br&gt;&lt;a href=&quot;http://caml.inria.fr/pub/ml-archives/caml-list/2009/06/542b8bed77022b4a4824de2da5b7f714.en.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/pub/ml-archives/caml-list/2009/06/542b8bed77022b4a4824de2da5b7f714.en.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Those should then also each pin themself to one core.
&lt;br&gt;&lt;br&gt;You have no idea which core a forked child process will run on.
&lt;br&gt;&lt;br&gt;&amp;gt; Each process then has a work queue which is works through. So they will 
&lt;br&gt;&amp;gt; always use the local data. Only when a queue runs dry they steal from
&lt;br&gt;&amp;gt; another process and ruin locality.
&lt;br&gt;&lt;br&gt;You are correctly describing the efficient solution based upon work-stealing 
&lt;br&gt;queues that F# uses but OCaml cannot express it.
&lt;br&gt;&lt;br&gt;&amp;gt; So I don't see where your argument fits. You are not creating childs
&lt;br&gt;&amp;gt; on the fly. Only at the start and they run till all the work is done.
&lt;br&gt;&amp;gt; At least in this example.
&lt;br&gt;&lt;br&gt;No, every recursive invocation of the parallel quicksort spawns another child 
&lt;br&gt;on-the-fly. That's precisely why it parallelizes so efficiently when you have 
&lt;br&gt;wait-free work-stealing task deques and a shared heap. In general, you 
&lt;br&gt;rewrite algorithms into this recursive divide and conquer form and 
&lt;br&gt;parallelize when possible. You can parallelize a *lot* of problems 
&lt;br&gt;efficiently that way.
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;gt; 4. Task deques can handle an arbitrary number of tasks limited only by
&lt;br&gt;&amp;gt; &amp;gt; memory whereas processes are a scarce resource and forking is likely to
&lt;br&gt;&amp;gt; &amp;gt; fail, whereupon the &amp;quot;invoke&amp;quot; combinator will simply execute sequentially.
&lt;br&gt;&amp;gt; &amp;gt; So it is much easier to write reliable and performant code in F# than
&lt;br&gt;&amp;gt; &amp;gt; OCaml.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Why would you fork in invoke?
&lt;br&gt;&lt;br&gt;Fork is currently the only transparent way to implement &amp;quot;invoke&amp;quot; but it is 
&lt;br&gt;extremely slow and unreliable.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; 5. OCaml's fork-based &amp;quot;invoke&amp;quot; combinator is many orders of magnitude
&lt;br&gt;&amp;gt; &amp;gt; slower than pushing a closure onto a concurrent task deque in F#.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; 6. The &amp;quot;threshold&amp;quot; value is a magic number derived from measurements on a
&lt;br&gt;&amp;gt; &amp;gt; given machine in my OCaml code but is dynamically adjusted in a
&lt;br&gt;&amp;gt; &amp;gt; machine-independent way by the &amp;quot;invoke&amp;quot; combinator in my F# code using
&lt;br&gt;&amp;gt; &amp;gt; atomic operations and real time profiling of the proportion of time spent
&lt;br&gt;&amp;gt; &amp;gt; spawning tasks vs doing actual work.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 5+6 seem to be an implementation detail of some specific
&lt;br&gt;&amp;gt; implementation you are talking about.
&lt;/div&gt;&lt;br&gt;Yes. I'm talking about today's OCaml and F# implementations.
&lt;br&gt;&lt;br&gt;&amp;gt; I don't see anything in the theory that would require that.
&lt;br&gt;&lt;br&gt;If by &amp;quot;in theory&amp;quot; you mean that a new performant concurrent GC for OCaml would 
&lt;br&gt;solve these problems then yes. But I doubt OCaml is ever going to get one.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; The same basic principles apply to many algorithms. Although it can
&lt;br&gt;&amp;gt; &amp;gt; sometimes be tricky to figure out how best to use this technology to
&lt;br&gt;&amp;gt; &amp;gt; parallelize a given algorithm (e.g. successive over relaxation), I have
&lt;br&gt;&amp;gt; &amp;gt; found that a great many algorithms can be parallelized effectively using
&lt;br&gt;&amp;gt; &amp;gt; this approach when you have a suitable foundation in place (like the
&lt;br&gt;&amp;gt; &amp;gt; TPL). Moreover, the ability to use ordinary constructs in F# instead of
&lt;br&gt;&amp;gt; &amp;gt; hacks like type-specific shared memory big arrays in OCaml makes it a lot
&lt;br&gt;&amp;gt; &amp;gt; easier to parallelize programs. My parallel Burrows-Wheeler Transform
&lt;br&gt;&amp;gt; &amp;gt; (BWT), for example, took 30 minutes to develop in F# and 2 days in OCaml.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It might be true that ocaml lacks some primitives for multi-core
&lt;br&gt;&amp;gt; operations. But I would say that is mostly because so far it hasn't
&lt;br&gt;&amp;gt; supported multi-core.
&lt;/div&gt;&lt;br&gt;Well, yes. :-)
&lt;br&gt;&lt;br&gt;&amp;gt; If F# has great support for this then that might be a good place to steal
&lt;br&gt;&amp;gt; some ideas from. 
&lt;br&gt;&lt;br&gt;The infrastructure for this kind of shared memory parallel programming is 
&lt;br&gt;really very simple. You just need a GC that can handle a shared heap (which 
&lt;br&gt;HLVM already has) and work-stealing task deques. Then you can easily write 
&lt;br&gt;parallel programs that leverage multicores and run a *lot* faster than 
&lt;br&gt;anything that can be written in OCaml. You can even make this accessible to 
&lt;br&gt;OCaml programmers as a DSL with automatic interop to make high performance 
&lt;br&gt;parallel programming as easy as possible from OCaml.
&lt;br&gt;&lt;br&gt;&amp;gt; But so far have heart nothing that would make F# fundamentally more capable
&lt;br&gt;&amp;gt; than ocaml could become.
&lt;br&gt;&lt;br&gt;In theory, OCaml could catch up with F#. In practice, the core of OCaml's 
&lt;br&gt;implementation is so heavily optimized in another direction (and that will 
&lt;br&gt;not change because it is OCaml's raison d'être) that it is worth starting 
&lt;br&gt;from scratch. Modern libraries like LLVM make this comparatively painless and 
&lt;br&gt;the improvements are vast. And besides, it is great fun! :-)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Dr Jon Harrop, Flying Frog Consultancy Ltd.
&lt;br&gt;&lt;a href=&quot;http://www.ffconsultancy.com/?e&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.ffconsultancy.com/?e&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OCaml-is-broken-tp26853708p26891885.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26892994</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] help installing 64-bit ocaml under  snowleopard (MacOS 10.6.2)</title>
	<published>2009-12-22T10:06:11Z</published>
	<updated>2009-12-22T10:06:11Z</updated>
	<author>
		<name>Ashish Agarwal-2</name>
	</author>
	<content type="html">I would recommend GODI &lt;a href=&quot;http://godi.camlcity.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://godi.camlcity.org&lt;/a&gt;. In addition to installing
&lt;br&gt;base ocaml, you will be able to install many libraries trivially.
&lt;br&gt;&lt;br&gt;&lt;br&gt;On Tue, Dec 22, 2009 at 7:08 AM, Hugo Ferreira &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26892994&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hmf@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Markus W. Weißmann wrote:
&lt;br&gt;&amp;gt; &amp;gt; On 22 Dec 2009, at 07:38, darooha wrote:
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I'm trying to get ocaml-3.11.1 installed on
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; macos 10.6.2 (snowleopard). I've got the 32 bit version working
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; but I want it running in 64 bit, which snowleopard supports.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I upgraded the machine recently form leopard to snowleopard.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; And I can't seem to get a 64 bit version of ocaml installed.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; For example, I did this configuration:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; ./configure -cc &amp;quot;gcc -m64&amp;quot; -as &amp;quot;as -arch i386&amp;quot; -aspp &amp;quot;gcc -m64 -c&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; you need '-arch x86_64' -- '-arch i386' is the 32 bit architecture (which
&lt;br&gt;&amp;gt; then collides with the '-m64' later on);
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; to make your life easier, you could also use a package manager like
&lt;br&gt;&amp;gt; macports (&lt;a href=&quot;http://www.macports.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.macports.org/&lt;/a&gt;) -- if this suits your needs.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Or you can try GODI:
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://godi.camlcity.org/godi/index.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://godi.camlcity.org/godi/index.html&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Regards,
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; -Markus
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;[Non-text portions of this message have been removed]
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------
&lt;br&gt;&lt;br&gt;Archives up to December 31, 2008 are also downloadable at &lt;a href=&quot;http://www.connettivo.net/cntprojects/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.connettivo.net/cntprojects/ocaml_beginners/&lt;/a&gt;&lt;br&gt;The archives of the very official ocaml list (the seniors' one) can be found at &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Attachments are banned and you're asked to be polite, avoid flames etc.Yahoo! Groups Links
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To visit your group on the web, go to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; Your email settings:
&lt;br&gt;&amp;nbsp; &amp;nbsp; Individual Email | Traditional
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To change settings online go to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners/join&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners/join&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (Yahoo! ID required)
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To change settings via email:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26892994&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-digest@...&lt;/a&gt; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26892994&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-fullfeatured@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; To unsubscribe from this group, send an email to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26892994&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners-unsubscribe@...&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&amp;lt;*&amp;gt; Your use of Yahoo! Groups is subject to:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://docs.yahoo.com/info/terms/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://docs.yahoo.com/info/terms/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---help-installing-64-bit-ocaml-under-snowleopard-%28MacOS-10.6.2%29-tp26884552p26892994.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26891927</id>
	<title>Re: Re: multicore wish</title>
	<published>2009-12-22T10:02:32Z</published>
	<updated>2009-12-22T10:02:32Z</updated>
	<author>
		<name>Edgar Friendly</name>
	</author>
	<content type="html">On 12/22/2009 01:12 PM, Jon Harrop wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Tuesday 22 December 2009 13:09:27 Goswin von Brederlow wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; The advantage with ocaml though is that you never have pointers into a
&lt;br&gt;&amp;gt;&amp;gt; structure. Makes thinks a lot simpler for the GC and avoids large
&lt;br&gt;&amp;gt;&amp;gt; overheads in memory.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt; I don't understand what you mean by OCaml &amp;quot;never has pointers into a
&lt;br&gt;&amp;gt; structure&amp;quot;. Half the problem with OCaml is that OCaml almost always uses
&lt;br&gt;&amp;gt; pointers and the programmer has no choice, e.g. for complex numbers.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;
&lt;/div&gt;I think he means that ocaml structs (records, tuples) will only ever 
&lt;br&gt;have pointers pointing to their beginning - you can't have a pointer to 
&lt;br&gt;somewhere in the middle of a structure.
&lt;br&gt;&lt;br&gt;E
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OCaml-is-broken-tp26853708p26891927.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26889880</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] grepping a large file (part 2)</title>
	<published>2009-12-22T07:17:32Z</published>
	<updated>2009-12-22T07:17:32Z</updated>
	<author>
		<name>Lars Nilsson</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 8:11 AM, Mihamina Rakotomandimby
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26889880&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mihamina@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; Richard Jones &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26889880&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rich@...&lt;/a&gt;&amp;gt; :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Honestly though, the while loop version is the best version.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Sure.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; But I am still in the step of getting my eyes used with &amp;quot;pure functions&amp;quot;
&lt;br&gt;&amp;gt; I previously coded in PHP and Python which make intensive use of for
&lt;br&gt;&amp;gt; loops, I would like to radically change, just for a moment.
&lt;br&gt;&lt;br&gt;You could always replace the while loop with a recursive function that
&lt;br&gt;does the same thing, if you really wanted to..
&lt;br&gt;&lt;br&gt;let find_str str =
&lt;br&gt;&amp;nbsp; let accumulator = ref [] in
&lt;br&gt;&amp;nbsp; &amp;nbsp; try
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; let rec find_str_rec () =
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; let line = input_line mail_log in
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if line_matched str line then accumulator := line :: !accumulator;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; find_str_rec ()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; in find_str_rec ()
&lt;br&gt;&amp;nbsp; &amp;nbsp; with End_of_file -&amp;gt; !accumulator
&lt;br&gt;&lt;br&gt;Lars Nilsson
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---grepping-a-large-file-%28part-2%29-tp26878957p26889880.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26889835</id>
	<title>Final Call for Participation: TLDI'10</title>
	<published>2009-12-22T07:13:53Z</published>
	<updated>2009-12-22T07:13:53Z</updated>
	<author>
		<name>Andrew Kennedy</name>
	</author>
	<content type="html">********************************************************************* 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;FINAL CALL FOR PARTICIPATION 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TLDI 2010 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ACM SIGPLAN Workshop on 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Types in Language Design and Implementation 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 23 January 2010 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Madrid, Spain
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;To be held in conjunction with POPL 2010
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://research.microsoft.com/~akenn/tldi2010/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://research.microsoft.com/~akenn/tldi2010/&lt;/a&gt;&lt;br&gt;********************************************************************* 
&lt;br&gt;&lt;br&gt;IMPORTANT DATES 
&lt;br&gt;&lt;br&gt;Early registration deadline for POPL: December 22, 2009 (TODAY!)
&lt;br&gt;&amp;nbsp;
&lt;br&gt;Hotel reservation deadline: December 28, 2009 (Monday)
&lt;br&gt;&lt;br&gt;&lt;br&gt;VENUE 
&lt;br&gt;&lt;br&gt;TLDI'10 and all POPL'10 affiliated events will take place at the Melia Castilla Hotel, Madrid.
&lt;br&gt;&lt;br&gt;&lt;br&gt;REGISTRATION
&lt;br&gt;&lt;br&gt;To register for TLDI'10, follow the link from the POPL 2010 page, at
&lt;br&gt;&lt;br&gt;&amp;nbsp; &lt;a href=&quot;http://www.cse.psu.edu/popl/10/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cse.psu.edu/popl/10/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;SCOPE 
&lt;br&gt;&lt;br&gt;The role of types and proofs in all aspects of language design,
&lt;br&gt;compiler construction, and software development has expanded greatly
&lt;br&gt;in recent years. Type systems, type-based analyses and type-theoretic
&lt;br&gt;deductive systems have been central to advances in compilation
&lt;br&gt;techniques for modern programming languages, verification of safety
&lt;br&gt;and security properties of programs, program transformation and
&lt;br&gt;optimization, and many other areas. The ACM SIGPLAN Workshop on Types
&lt;br&gt;in Language Design and Implementation brings researchers together to
&lt;br&gt;share new ideas and results concerning all aspects of types and
&lt;br&gt;programming, and is now an annual event.
&lt;br&gt;&lt;br&gt;&lt;br&gt;INVITED SPEAKER
&lt;br&gt;&lt;br&gt;Matthias Felleisen, Northeastern University, Boston
&lt;br&gt;&lt;br&gt;&lt;br&gt;PRELIMINARY PROGRAM 
&lt;br&gt;&lt;br&gt;---------------------- 
&lt;br&gt;Opening remarks: 9:20-9:30 
&lt;br&gt;&lt;br&gt;Invited talk &amp;nbsp;9:30-10:30 
&lt;br&gt;&lt;br&gt;*** Adding Types to Untyped Languages
&lt;br&gt;&amp;nbsp; &amp;nbsp;Matthias Felleisen, Northeastern University, Boston
&lt;br&gt;&lt;br&gt;---------------------- 
&lt;br&gt;** Session I &amp;nbsp; 11:00-12:30
&lt;br&gt;&lt;br&gt;*** Effects for Cooperable and Serializable Threads
&lt;br&gt;&amp;nbsp; &amp;nbsp;Jaeheon Yi and Cormac Flanagan
&lt;br&gt;&lt;br&gt;*** Race-free and Memory-safe Multithreading: Design and Implementation in Cyclone
&lt;br&gt;&amp;nbsp; &amp;nbsp;Prodromos Gerakios, Nikolaos Papaspyrou and Konstantinos Sagonas
&lt;br&gt;&lt;br&gt;*** Distributed programming with distributed authorization
&lt;br&gt;&amp;nbsp; &amp;nbsp;Kumar Avijit, Anupam Datta and Robert Harper 
&lt;br&gt;&lt;br&gt;---------------------- 
&lt;br&gt;** Session II &amp;nbsp; 2:30-4:00 
&lt;br&gt;&lt;br&gt;*** let should not be generalized
&lt;br&gt;&amp;nbsp; &amp;nbsp;Dimitrios Vytiniotis, Simon Peyton Jones and Tom Schrijvers 
&lt;br&gt;&lt;br&gt;*** Pointwise Generalized Algebraic Data Types
&lt;br&gt;&amp;nbsp; &amp;nbsp;Chuan-kai Lin and Tim Sheard
&lt;br&gt;&lt;br&gt;*** Verifying Event-Driven Programs using Ramified Frame Properties
&lt;br&gt;&amp;nbsp; &amp;nbsp;Neelakantan Krishnaswami, Lars Birkedal and Jonathan Aldrich 
&lt;br&gt;&lt;br&gt;---------------------- 
&lt;br&gt;** Session III &amp;nbsp; 4:30-5:30 
&lt;br&gt;&lt;br&gt;*** Lightweight Linear Types in System F^o
&lt;br&gt;&amp;nbsp; &amp;nbsp;Karl Mazurak, Jianzhou Zhao and Steve Zdancewic 
&lt;br&gt;&lt;br&gt;*** F-ing Modules
&lt;br&gt;&amp;nbsp; &amp;nbsp;Andreas Rossberg, Claudio Russo and Derek Dreyer
&lt;br&gt;&lt;br&gt;---------------------- 
&lt;br&gt;&lt;br&gt;&lt;br&gt;GENERAL CHAIR 
&lt;br&gt;&lt;br&gt;&amp;nbsp; Andrew Kennedy, Microsoft Research, Cambridge 
&lt;br&gt;&lt;br&gt;&lt;br&gt;PROGRAM CHAIR 
&lt;br&gt;&lt;br&gt;&amp;nbsp; Nick Benton, Microsoft Research, Cambridge
&lt;br&gt;&lt;br&gt;&lt;br&gt;PROGRAM COMMITTEE 
&lt;br&gt;&lt;br&gt;&amp;nbsp; Gilles Barthe, IMDEA Software, Spain
&lt;br&gt;&amp;nbsp; Viviana Bono, University of Torino, Italy
&lt;br&gt;&amp;nbsp; Giorgio Ghelli, University of Pisa, Italy
&lt;br&gt;&amp;nbsp; Dan Grossman, University of Washington, USA
&lt;br&gt;&amp;nbsp; Atsushi Igarashi, Kyoto University, Japan
&lt;br&gt;&amp;nbsp; Conor McBride, University of Strathclyde, UK
&lt;br&gt;&amp;nbsp; Jeremy Siek, University of Colorado at Boulder, USA
&lt;br&gt;&amp;nbsp; Zhong Shao, Yale University, USA
&lt;br&gt;&amp;nbsp; Matthieu Sozeau, Harvard University, USA
&lt;br&gt;&amp;nbsp; Chris Stone, Harvey Mudd College, USA
&lt;br&gt;&amp;nbsp; Kristian Støvring, ITU Copenhagen, Denmark
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Final-Call-for-Participation%3A-TLDI%2710-tp26889835p26889835.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888575</id>
	<title>Re: Looking for information regarding use of OCaml in  scientific computing and simulation</title>
	<published>2009-12-22T05:44:16Z</published>
	<updated>2009-12-22T05:44:16Z</updated>
	<author>
		<name>Eray Ozkural-3</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 3:11 PM, Eray Ozkural &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888575&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;examachine@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; However, let's not forget about the new GPU architectures, which are
&lt;br&gt;&amp;gt; sort of hybrid. The newer GPUs will have more exotic on-chip
&lt;br&gt;&amp;gt; interconnection networks.
&lt;br&gt;&lt;br&gt;Some more clarification, as the number of cores increase, you would
&lt;br&gt;expect more of an MIMD architecture rather than SMP-like shared
&lt;br&gt;memory+cache or the SIMD that some architectures were based on (like
&lt;br&gt;the Cell processor etc.) Or a hybrid one, who knows? The certain
&lt;br&gt;picture at the moment is that, the architectures are getting *more*
&lt;br&gt;complex to program and to optimize for.
&lt;br&gt;&lt;br&gt;I don't think we can neglect the use of a shared memory space. Among
&lt;br&gt;other things, with multiple cores, it allows us to directly implement
&lt;br&gt;the PRAM algorithms that are prevalent in parallel computing
&lt;br&gt;literature. On the other hand, most of the existing parallel
&lt;br&gt;applications assume the traditional cluster architecture. I don't
&lt;br&gt;think we can say at the moment, this or that programming *paradigm* is
&lt;br&gt;the best, but I think it's high time we experiment with higher-level
&lt;br&gt;constructs that are fitting for functional languages. Sure, you can
&lt;br&gt;have parallelism with just a multi-threading construct and an
&lt;br&gt;atomicity construct but I think there is much more to parallelism than
&lt;br&gt;that for a high-level language. That stuff we have in parallel
&lt;br&gt;assembly, it would be the sort of code that a compiler generates
&lt;br&gt;perhaps.
&lt;br&gt;&lt;br&gt;I also anticipate that it should not be very difficult to write a
&lt;br&gt;parallelizing compiler for ocaml. It would be great to directly target
&lt;br&gt;all those nifty register files etc. in the NVIDIA GPU's. :) And it
&lt;br&gt;seems perhaps the only sane way to make the kind of fine optimizations
&lt;br&gt;that a complex architecture would call for.
&lt;br&gt;&lt;br&gt;Best,
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Eray Ozkural, PhD candidate. &amp;nbsp;Comp. Sci. Dept., Bilkent University, Ankara
&lt;br&gt;&lt;a href=&quot;http://groups.yahoo.com/group/ai-philosophy&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ai-philosophy&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://myspace.com/arizanesil&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://myspace.com/arizanesil&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://myspace.com/malfunct&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://myspace.com/malfunct&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Looking-for-information-regarding-use-of-OCaml-in-scientific-computing-and-simulation-tp26510892p26888575.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888555</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] parsing and extracting dirty HTML</title>
	<published>2009-12-22T05:43:25Z</published>
	<updated>2009-12-22T05:43:25Z</updated>
	<author>
		<name>Camarade_Tux</name>
	</author>
	<content type="html">I was wondering, has anyone tried to get the engine out of MMM[1] and
&lt;br&gt;make it a separate library?
&lt;br&gt;(note: I haven't even looked at mmm's source code)
&lt;br&gt;&lt;br&gt;[1] &lt;a href=&quot;http://pauillac.inria.fr/mmm/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mmm/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;---
&lt;br&gt;&lt;br&gt;Adrien Nader
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---parsing-and-extracting-dirty-HTML-tp26884914p26888555.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888527</id>
	<title>Re: Looking for information regarding use of OCaml in  scientific computing and simulation</title>
	<published>2009-12-22T05:41:11Z</published>
	<updated>2009-12-22T05:41:11Z</updated>
	<author>
		<name>Gerd Stolpmann-2</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&amp;gt; Have you ever tried writing a significant or complex algo using
&lt;br&gt;&amp;gt; message passing? &amp;nbsp;Its fun if you have nothing better to to --
&lt;br&gt;&amp;gt; its a good intellectual challenge. &amp;nbsp;You can even learn some
&lt;br&gt;&amp;gt; interesting computer science while you do it.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; However, if you are &amp;nbsp;interested in merely using the system
&lt;br&gt;&amp;gt; to do your &amp;quot;real&amp;quot; work, then writing message-passing code
&lt;br&gt;&amp;gt; is an utter waste of time -- its difficult, time-consuming, error
&lt;br&gt;&amp;gt; prone, hard to balance and optimize &amp; tune, works well only
&lt;br&gt;&amp;gt; for &amp;quot;embarrasingly parallel&amp;quot; code, etc. &amp;nbsp;Even the evil
&lt;br&gt;&amp;gt; slow-down of NUMA is often better than trying to
&lt;br&gt;&amp;gt; performance-tune a message-passing system.
&lt;/div&gt;&lt;br&gt;Well, it is true that message passing is more expensive, and you need
&lt;br&gt;bigger data sets until it is worth it (nonsense to do a 10x10 matrix
&lt;br&gt;multiplication with message passing). However, I don't think it is that
&lt;br&gt;complicated as you describe. Especially ocaml's uniform representation
&lt;br&gt;of values can help a lot, and hide many of the low-level details. It
&lt;br&gt;could be a lot like continuation-passing style.
&lt;br&gt;&lt;br&gt;Hard to balance and optimize &amp; tune: This is true for _any_
&lt;br&gt;parallelization strategy.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Let me put it this way: suggesting that programmers can
&lt;br&gt;&amp;gt; write their own message-passing system is kind of like
&lt;br&gt;&amp;gt; telling them that they can write their own garbage-collection
&lt;br&gt;&amp;gt; system, or design their own closures, or they can go
&lt;br&gt;&amp;gt; create their own type system. Of course they can ... and
&lt;br&gt;&amp;gt; if they wanted to do that, they would be programming in
&lt;br&gt;&amp;gt; C or assembly, and would probably be designing new
&lt;br&gt;&amp;gt; languages. &amp;nbsp;Cause by the time you get done with message
&lt;br&gt;&amp;gt; passing, you've created a significant and rich programming
&lt;br&gt;&amp;gt; system that resembles a poorly-designed language... been
&lt;br&gt;&amp;gt; there, done that.
&lt;/div&gt;&lt;br&gt;See it this way: The typical ocaml programmer doesn't like system
&lt;br&gt;programming, and will seldom/never touch C or assembly. The task it to
&lt;br&gt;help this kind of programmer, and to make parallel programming available
&lt;br&gt;in a higher-level way than it is available elsewhere. 
&lt;br&gt;&lt;br&gt;Gerd
&lt;br&gt;-- 
&lt;br&gt;------------------------------------------------------------
&lt;br&gt;Gerd Stolpmann, Bad Nauheimer Str.3, 64289 Darmstadt,Germany 
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888527&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gerd@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.gerd-stolpmann.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gerd-stolpmann.de&lt;/a&gt;&lt;br&gt;Phone: +49-6151-153855 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Fax: +49-6151-997714
&lt;br&gt;------------------------------------------------------------
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Looking-for-information-regarding-use-of-OCaml-in-scientific-computing-and-simulation-tp26510892p26888527.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888486</id>
	<title>Re: obj.magic for polymorphic record fields</title>
	<published>2009-12-22T05:35:10Z</published>
	<updated>2009-12-22T05:35:10Z</updated>
	<author>
		<name>Goswin von Brederlow-2</name>
	</author>
	<content type="html">Boris Yakobowski &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888486&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;boris@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, Dec 21, 2009 at 2:44 PM, Goswin von Brederlow &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888486&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;goswin-v-b@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; However it issues a warning so i acknowledge it's less elegant.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Which I don't quite understand.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The warning is based on the results of the type inference algorithm.
&lt;br&gt;&amp;gt; You're not supposed to find values of type 'a. 'a &amp;quot;in the wild&amp;quot;, yet
&lt;br&gt;&amp;gt; (Obj.magic a) has this type. Thus the Ocaml compiler deduces that
&lt;br&gt;&amp;gt; you're doing something wrong: your function never returns, it does not
&lt;br&gt;&amp;gt; use its arguments, etc. Here, using Obj.magic breaks the crystal ball
&lt;br&gt;&amp;gt; of the compiler, and the warning is incorrect.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; There is an easy way to silence the warning though:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; let baz = {bar = fun x -&amp;gt; (Obj.magic a : _ -&amp;gt; _) x}
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (but not let baz = {bar = fun x -&amp;gt; (Obj.magic a : 'a -&amp;gt; 'a) x} for
&lt;br&gt;&amp;gt; ugly reasons...)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You are however quite correct. Using Obj.magic in this particular case
&lt;br&gt;&amp;gt; seems quite wrong.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Boris
&lt;/div&gt;&lt;br&gt;But the type inference should deduce that in
&lt;br&gt;&lt;br&gt;(Obj.magic fn) x
&lt;br&gt;&lt;br&gt;the 'a is actually 'b -&amp;gt; 'c as I am applying an argument to it.
&lt;br&gt;Seems to me there is something special for Obj.magic so it doesn't
&lt;br&gt;automatically cast values to functions.
&lt;br&gt;&lt;br&gt;MfG
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Goswin
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re-2-%3A-obj.magic-for-polymorphic-record-fields-tp26866102p26888486.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888273</id>
	<title>Re: Re: OCaml is broken</title>
	<published>2009-12-22T05:22:00Z</published>
	<updated>2009-12-22T05:22:00Z</updated>
	<author>
		<name>Gerd Stolpmann-2</name>
	</author>
	<content type="html">&lt;br&gt;Am Dienstag, den 22.12.2009, 13:04 +0100 schrieb Erik Rigtorp:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Mon, Dec 21, 2009 at 23:50, Erik Rigtorp &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888273&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;erik@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; Some IPC Benchmarks, Solaris 10 on a quad core Intel Core2 Duo. The
&lt;br&gt;&amp;gt; &amp;gt; benchmarks are running on a cpuset with 1 core. I measure the time
&lt;br&gt;&amp;gt; &amp;gt; from sending in one process until the other process receives the
&lt;br&gt;&amp;gt; &amp;gt; message. So a context switch and the message passing is included in
&lt;br&gt;&amp;gt; &amp;gt; the measurements.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Max/Min/Avg
&lt;br&gt;&amp;gt; &amp;gt; * Pipes: 28205/5973/6259
&lt;br&gt;&amp;gt; &amp;gt; * Unix domain sockets: 44256/7748/8153
&lt;br&gt;&amp;gt; &amp;gt; * SYSv message queues: 19197/5895/6173
&lt;br&gt;&amp;gt; &amp;gt; * Posix message queues: 37399/10965/11303
&lt;br&gt;&amp;gt; &amp;gt; * TCP on loopback: 29017/7471/7885
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; So the latency is roughly 10µs for all these solutions. That latency
&lt;br&gt;&amp;gt; &amp;gt; is pretty high and would be several times the processing time of the
&lt;br&gt;&amp;gt; &amp;gt; message itself.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Some more benchmarks:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Max/Min/Avg
&lt;br&gt;&amp;gt; * Spinlocking shm: 50897/403/761 &amp;nbsp;(This one utilizes multiple cores,
&lt;br&gt;&amp;gt; since one core is just burning while waiting for data)
&lt;br&gt;&amp;gt; * Pthreads mutex shm: 27582/5246/6577
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Forgot to say that all measurements are in nanoseconds.
&lt;/div&gt;&lt;br&gt;That's for communication between processes, right? How would the picture
&lt;br&gt;be different (especially comparing the latter two) if you do message
&lt;br&gt;passing between threads? If I remember correctly, threads are more
&lt;br&gt;light-weight in Solaris than processes. That could also affect context
&lt;br&gt;switching times, and scheduler decisions.
&lt;br&gt;&lt;br&gt;Do you have source code? I could also run in on Linux, for comparison.
&lt;br&gt;&lt;br&gt;Gerd
&lt;br&gt;-- 
&lt;br&gt;------------------------------------------------------------
&lt;br&gt;Gerd Stolpmann, Bad Nauheimer Str.3, 64289 Darmstadt,Germany 
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888273&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;gerd@...&lt;/a&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.gerd-stolpmann.de&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.gerd-stolpmann.de&lt;/a&gt;&lt;br&gt;Phone: +49-6151-153855 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Fax: +49-6151-997714
&lt;br&gt;------------------------------------------------------------
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OCaml-is-broken-tp26853708p26888273.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888130</id>
	<title>Re: Looking for information regarding use of OCaml in  scientific computing and simulation</title>
	<published>2009-12-22T05:11:58Z</published>
	<updated>2009-12-22T05:11:58Z</updated>
	<author>
		<name>Eray Ozkural-3</name>
	</author>
	<content type="html">On Tue, Dec 22, 2009 at 6:40 AM, Linas Vepstas &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888130&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;linasvepstas@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; However, if you are  interested in merely using the system
&lt;br&gt;&amp;gt; to do your &amp;quot;real&amp;quot; work, then writing message-passing code
&lt;br&gt;&amp;gt; is an utter waste of time -- its difficult, time-consuming, error
&lt;br&gt;&amp;gt; prone, hard to balance and optimize &amp; tune, works well only
&lt;br&gt;&amp;gt; for &amp;quot;embarrasingly parallel&amp;quot; code, etc.  Even the evil
&lt;br&gt;&amp;gt; slow-down of NUMA is often better than trying to
&lt;br&gt;&amp;gt; performance-tune a message-passing system.
&lt;br&gt;&lt;br&gt;Message passing doesn't work well only for embarrassingly parallel
&lt;br&gt;code. For instance, you can implement the aforementioned parallel
&lt;br&gt;quicksort rather easily, but it's true that message passing is
&lt;br&gt;low-level. The really bad thing about MPI is that it assumes some
&lt;br&gt;C-like environment. C has the worst semantics ever, so programs that
&lt;br&gt;require/encourage such a style of writing are inherently, well, &amp;nbsp;bad
&lt;br&gt;=) And yes, MPI's difficult to debug.
&lt;br&gt;&lt;br&gt;What message passing really is, it is the perfect match to a
&lt;br&gt;distributed memory architecture. Since, as you suggest, multicore
&lt;br&gt;chips have more or less a shared memory architecture, message passing
&lt;br&gt;is indeed not a good match.
&lt;br&gt;&lt;br&gt;However, let's not forget about the new GPU architectures, which are
&lt;br&gt;sort of hybrid. The newer GPUs will have more exotic on-chip
&lt;br&gt;interconnection networks.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Let me put it this way: suggesting that programmers can
&lt;br&gt;&amp;gt; write their own message-passing system is kind of like
&lt;br&gt;&amp;gt; telling them that they can write their own garbage-collection
&lt;br&gt;&amp;gt; system, or design their own closures, or they can go
&lt;br&gt;&amp;gt; create their own type system. Of course they can ... and
&lt;br&gt;&amp;gt; if they wanted to do that, they would be programming in
&lt;br&gt;&amp;gt; C or assembly, and would probably be designing new
&lt;br&gt;&amp;gt; languages.  Cause by the time you get done with message
&lt;br&gt;&amp;gt; passing, you've created a significant and rich programming
&lt;br&gt;&amp;gt; system that resembles a poorly-designed language... been
&lt;br&gt;&amp;gt; there, done that.
&lt;/div&gt;&lt;br&gt;For a functional language, am I right in expecting a high-level and
&lt;br&gt;clean interface for explicit parallelism?
&lt;br&gt;&lt;br&gt;I suppose a &amp;quot;spawn&amp;quot; directive would not be very hard to implement. Or
&lt;br&gt;a parallel let block. I don't know what kind of direction the caml
&lt;br&gt;researchers have in mind (except for some INRIA projects I've read
&lt;br&gt;about) but I suppose it can be done (closures could be a nice
&lt;br&gt;interface, I think).
&lt;br&gt;&lt;br&gt;Message Passing/Distributed Memory can also be accommodated I suppose.
&lt;br&gt;For distributed memory, you just need an addressing scheme to denote
&lt;br&gt;the processor number. You could allocate with a parallel new that
&lt;br&gt;takes a processor number argument for instance. For message passing,
&lt;br&gt;you need one-to-one, collective, and one-sided communications. On top
&lt;br&gt;of an imperative but failsafe and debuggable interface, you could
&lt;br&gt;provide neat functional blocks. For instance, you could present the
&lt;br&gt;user with a shuffle/map/reduce interface like in Google's grid
&lt;br&gt;computing platform.
&lt;br&gt;&lt;br&gt;I would also like to have some computing-abstraction (like Monads, but
&lt;br&gt;more flexible) so I can easily build networks of sequential algorithms
&lt;br&gt;(kind of like Communicating Sequential Processses). It would also be
&lt;br&gt;nice to have functors that implement commonly occurring parallel
&lt;br&gt;programming patterns (such as master-slave dynamic load balancing or
&lt;br&gt;pipelining). Such things are difficult to manage in a low-level
&lt;br&gt;language like C, but they would be a piece of cake in ocaml. &amp;nbsp;Or is
&lt;br&gt;fate sending that my way? Oh, not again! :)
&lt;br&gt;&lt;br&gt;OcamlP3l looks pretty cool. Parallel combinators? Definitely what I'm
&lt;br&gt;talking about, as usual the future is here with ocaml ;)
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://ocamlp3l.inria.fr/eng.htm&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ocamlp3l.inria.fr/eng.htm&lt;/a&gt;&lt;br&gt;&lt;br&gt;Best,
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Eray Ozkural, PhD candidate. &amp;nbsp;Comp. Sci. Dept., Bilkent University, Ankara
&lt;br&gt;&lt;a href=&quot;http://groups.yahoo.com/group/ai-philosophy&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ai-philosophy&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://myspace.com/arizanesil&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://myspace.com/arizanesil&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://myspace.com/malfunct&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://myspace.com/malfunct&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Looking-for-information-regarding-use-of-OCaml-in-scientific-computing-and-simulation-tp26510892p26888130.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888174</id>
	<title>Re: &quot;ocaml_beginners&quot;::[] grepping a large file (part 2)</title>
	<published>2009-12-22T05:11:49Z</published>
	<updated>2009-12-22T05:11:49Z</updated>
	<author>
		<name>Mihamina Rakotomandimby-6</name>
	</author>
	<content type="html">&amp;gt; Richard Jones &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888174&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;rich@...&lt;/a&gt;&amp;gt; :
&lt;br&gt;&amp;gt; Honestly though, the while loop version is the best version. 
&lt;br&gt;&lt;br&gt;Sure.
&lt;br&gt;&lt;br&gt;But I am still in the step of getting my eyes used with &amp;quot;pure functions&amp;quot;
&lt;br&gt;I previously coded in PHP and Python which make intensive use of for
&lt;br&gt;loops, I would like to radically change, just for a moment.
&lt;br&gt;&lt;br&gt;&amp;gt; Some
&lt;br&gt;&amp;gt; thing are just better done imperatively, and looping over a list of
&lt;br&gt;&amp;gt; input items is one of those things. &amp;nbsp;Luckily OCaml is a flexible
&lt;br&gt;&amp;gt; programming language that gives you a nice choice of styles to use!
&lt;br&gt;&lt;br&gt;Luckily, as you said :-)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Architecte Informatique chez Blueline/Gulfsat:
&lt;br&gt;&amp;nbsp; &amp;nbsp; Administration Systeme, Recherche &amp; Developpement
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; +261 34 29 155 34 / +261 33 11 207 36
&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---grepping-a-large-file-%28part-2%29-tp26878957p26888174.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888180</id>
	<title>&quot;ocaml_beginners&quot;::[] Re: help installing 64-bit ocaml under snowleopard (MacOS 10.6.2)</title>
	<published>2009-12-22T05:11:02Z</published>
	<updated>2009-12-22T05:11:02Z</updated>
	<author>
		<name>darooha</name>
	</author>
	<content type="html">Thanks. &amp;nbsp;But that didn't help. &amp;nbsp;It seems to do almost the same thing. &amp;nbsp;I posted the result of the ./configure run and the &amp;quot;make world&amp;quot; run again (in a different file). &lt;a href=&quot;http://www.cs.cmu.edu/~sleator/work/problem-installing-64-bit-ocaml2.txt&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.cs.cmu.edu/~sleator/work/problem-installing-64-bit-ocaml2.txt&lt;/a&gt;&lt;br&gt;&lt;br&gt;I guess I can try macports again. &amp;nbsp;I vaguely recall there being some problem, like that it was not using the most up-to-date version of ocaml.
&lt;br&gt;&lt;br&gt;--DS
&lt;br&gt;&lt;br&gt;--- In &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888180&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ocaml_beginners@...&lt;/a&gt;, &amp;quot;Markus W. Weißmann&amp;quot; &amp;lt;markus.weissmann@...&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; On 22 Dec 2009, at 07:38, darooha wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I'm trying to get ocaml-3.11.1 installed on
&lt;br&gt;&amp;gt; &amp;gt; macos 10.6.2 (snowleopard). &amp;nbsp;I've got the 32 bit version working
&lt;br&gt;&amp;gt; &amp;gt; but I want it running in 64 bit, which snowleopard supports.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I upgraded the machine recently form leopard to snowleopard.
&lt;br&gt;&amp;gt; &amp;gt; And I can't seem to get a 64 bit version of ocaml installed.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; For example, I did this configuration:
&lt;br&gt;&amp;gt; &amp;gt; ./configure -cc &amp;quot;gcc -m64&amp;quot; -as &amp;quot;as -arch i386&amp;quot; -aspp &amp;quot;gcc -m64 -c&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; you need '-arch x86_64' -- '-arch i386' is the 32 bit architecture (which then collides with the '-m64' later on);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; to make your life easier, you could also use a package manager like macports (&lt;a href=&quot;http://www.macports.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.macports.org/&lt;/a&gt;) -- if this suits your needs.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -Markus
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Markus Weißmann, M.Sc.
&lt;br&gt;&amp;gt; Technische Universität München
&lt;br&gt;&amp;gt; Institut für Informatik
&lt;br&gt;&amp;gt; Boltzmannstr. 3
&lt;br&gt;&amp;gt; D-85748 Garching
&lt;br&gt;&amp;gt; Germany
&lt;br&gt;&amp;gt; Tel. +49 (89) 2 89-1 81 05
&lt;br&gt;&amp;gt; Fax +49 (89) 2 89-1 81 07
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://wwwknoll.in.tum.de/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://wwwknoll.in.tum.de/&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Ocaml-Beginner-f14002.html&quot; embed=&quot;fixTarget[14002]&quot; target=&quot;_top&quot; &gt;Ocaml Beginner&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%22ocaml_beginners%22%3A%3A---help-installing-64-bit-ocaml-under-snowleopard-%28MacOS-10.6.2%29-tp26884552p26888180.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26888101</id>
	<title>Re: multicore wish</title>
	<published>2009-12-22T05:09:27Z</published>
	<updated>2009-12-22T05:09:27Z</updated>
	<author>
		<name>Goswin von Brederlow-2</name>
	</author>
	<content type="html">Jon Harrop &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26888101&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;jon@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Cilk pioneered wait-free work-stealing task deques and Microsoft's Task 
&lt;br&gt;&amp;gt; Parallel Library (which will be part of .NET 4 in March 2010) copied the 
&lt;br&gt;&amp;gt; idea. You have a separate deque of tasks for each core. A core tries to pop a 
&lt;br&gt;&amp;gt; task off its deque. If there are no tasks on its deque then it tries to pop 
&lt;br&gt;&amp;gt; off a randomly-chosen other deque. If there is a task then the core begins 
&lt;br&gt;&amp;gt; executing that task and any child tasks are pushed back onto the local deque 
&lt;br&gt;&amp;gt; (and might get stolen before they are executed).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; An important characteristic of this design is that child tasks are likely to 
&lt;br&gt;&amp;gt; be executed on the same core as their parent and, therefore, locality between 
&lt;br&gt;&amp;gt; related tasks is valuable. Consequently, many algorithms that recursively 
&lt;br&gt;&amp;gt; subdivide a large dataset (like quicksort) attain superlinear speedups 
&lt;br&gt;&amp;gt; because they make effective use of the sum of all L2 caches rather than just 
&lt;br&gt;&amp;gt; a single L2 cache. So this works extremely well with the multi-level 
&lt;br&gt;&amp;gt; hierarchical caches with interconnects that are the hallmark of multicore 
&lt;br&gt;&amp;gt; architecture.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You can then implement quicksort (and many other parallel divide and conquer 
&lt;br&gt;&amp;gt; algorithms) something like this:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; let rec serial_qsort cmp a i0 i3 &amp;nbsp;=
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if i3 - i0 &amp;gt; 1 then
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; let i1, i2 = partition cmp a i0 i3 in
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial_qsort i0 i1;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial_qsort i2 i3
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; let rec parallel_qsort cmp a i0 i3 &amp;nbsp;=
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; if i3 - i0 &amp;gt; 1 then
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; if i3 - i0 &amp;lt; threshold then
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; serial_qsort cmp a i0 i3
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; else
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; let i1, i2 = partition cmp a i0 i3 in
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; let future = invoke (parallel_qsort cmp i0) i1 in
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; parallel_qsort i2 i3
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; future()
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; where the &amp;quot;invoke&amp;quot; combinator pushes a task onto the local task deque and 
&lt;br&gt;&amp;gt; returns a closure that, when applied, waits for that task to complete and 
&lt;br&gt;&amp;gt; returns its (unit) result. The &amp;quot;threshold&amp;quot; value protects against the 
&lt;br&gt;&amp;gt; function spending more time spawning tasks that doing actual work.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You can implement this in OCaml and F# but there are some important 
&lt;br&gt;&amp;gt; differences:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 1. The array &amp;quot;a&amp;quot; is just an ordinary array of any type of values on the shared 
&lt;br&gt;&amp;gt; heap in F# but, for generality in OCaml, this must be both the underlying 
&lt;br&gt;&amp;gt; ordinary data and a manually-managed shared big array of indices into the 
&lt;br&gt;&amp;gt; ordinary data where the indices get sorted while the original data remain in 
&lt;br&gt;&amp;gt; place until they are permuted at the end.
&lt;/div&gt;&lt;br&gt;Unless you have a primitive type that isn't a pointer.
&lt;br&gt;&lt;br&gt;The advantage with ocaml though is that you never have pointers into a
&lt;br&gt;structure. Makes thinks a lot simpler for the GC and avoids large
&lt;br&gt;overheads in memory.
&lt;br&gt;&lt;br&gt;&amp;gt; 2. The sorted subarrays are contiguous in memory and, at some subdivision, 
&lt;br&gt;&amp;gt; will fit into L2 cache. So F# offers optimal locality. In contrast, there is 
&lt;br&gt;&amp;gt; no locality whatsoever in the OCaml code and most accesses into the unsorted 
&lt;br&gt;&amp;gt; original array will incur cache misses right up to main memory. So the OCaml 
&lt;br&gt;&amp;gt; approach does not scale as well and will never see superlinear speedup 
&lt;br&gt;&amp;gt; because it cannot be cache friendly.
&lt;br&gt;&lt;br&gt;On the other hand swapping two elements in the array has a constant
&lt;br&gt;cost no matter what size they have. At some size there will be a break
&lt;br&gt;even point where copying the data costs more than the cache misses and
&lt;br&gt;with increasing size the cache won't help F# so much either.
&lt;br&gt;&lt;br&gt;&amp;gt; 3. Child tasks are likely to be executed on the same core as their parent and 
&lt;br&gt;&amp;gt; use a subset of their parent's data in F#, so they offer the best possible 
&lt;br&gt;&amp;gt; locality. In contrast, child processes are likely to be executed on another 
&lt;br&gt;&amp;gt; core in OCaml and offer the worst possible locality.
&lt;br&gt;&lt;br&gt;But, if I understood you right, you first fork one process per
&lt;br&gt;core. Those should then also each pin themself to one core. Each
&lt;br&gt;process then has a work queue which is works through. So they will
&lt;br&gt;always use the local data. Only when a queue runs dry they steal from
&lt;br&gt;another process and ruin locality.
&lt;br&gt;&lt;br&gt;So I don't see where your argument fits. You are not creating childs
&lt;br&gt;on the fly. Only at the start and they run till all the work is done.
&lt;br&gt;At least in this example.
&lt;br&gt;&lt;br&gt;&amp;gt; 4. Task deques can handle an arbitrary number of tasks limited only by memory 
&lt;br&gt;&amp;gt; whereas processes are a scarce resource and forking is likely to fail, 
&lt;br&gt;&amp;gt; whereupon the &amp;quot;invoke&amp;quot; combinator will simply execute sequentially. So it is 
&lt;br&gt;&amp;gt; much easier to write reliable and performant code in F# than OCaml.
&lt;br&gt;&lt;br&gt;Why would you fork in invoke? That only adds a closure to the task
&lt;br&gt;queue for the core.
&lt;br&gt;&lt;br&gt;&amp;gt; 5. OCaml's fork-based &amp;quot;invoke&amp;quot; combinator is many orders of magnitude slower 
&lt;br&gt;&amp;gt; than pushing a closure onto a concurrent task deque in F#.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; 6. The &amp;quot;threshold&amp;quot; value is a magic number derived from measurements on a 
&lt;br&gt;&amp;gt; given machine in my OCaml code but is dynamically adjusted in a 
&lt;br&gt;&amp;gt; machine-independent way by the &amp;quot;invoke&amp;quot; combinator in my F# code using atomic 
&lt;br&gt;&amp;gt; operations and real time profiling of the proportion of time spent spawning 
&lt;br&gt;&amp;gt; tasks vs doing actual work.
&lt;br&gt;&lt;br&gt;5+6 seem to be an implementation detail of some specific
&lt;br&gt;implementation you are talking about. I don't see anything in the
&lt;br&gt;theory that would require that.
&lt;br&gt;&lt;br&gt;&amp;gt; The same basic principles apply to many algorithms. Although it can sometimes 
&lt;br&gt;&amp;gt; be tricky to figure out how best to use this technology to parallelize a 
&lt;br&gt;&amp;gt; given algorithm (e.g. successive over relaxation), I have found that a great 
&lt;br&gt;&amp;gt; many algorithms can be parallelized effectively using this approach when you 
&lt;br&gt;&amp;gt; have a suitable foundation in place (like the TPL). Moreover, the ability to 
&lt;br&gt;&amp;gt; use ordinary constructs in F# instead of hacks like type-specific shared 
&lt;br&gt;&amp;gt; memory big arrays in OCaml makes it a lot easier to parallelize programs. My 
&lt;br&gt;&amp;gt; parallel Burrows-Wheeler Transform (BWT), for example, took 30 minutes to 
&lt;br&gt;&amp;gt; develop in F# and 2 days in OCaml.
&lt;br&gt;&lt;br&gt;It might be true that ocaml lacks some primitives for multi-core
&lt;br&gt;operations. But I would say that is mostly because so far it hasn't
&lt;br&gt;supported multi-core. If F# has great support for this then that might
&lt;br&gt;be a good place to steal some ideas from. But so far have heart
&lt;br&gt;nothing that would make F# fundamentally more capable than ocaml could
&lt;br&gt;become.
&lt;br&gt;&lt;br&gt;&amp;gt; Hopefully, HLVM will bring these kinds of benefits to OCaml, albeit in the 
&lt;br&gt;&amp;gt; form of a DSL for high performance parallel programming.
&lt;br&gt;&lt;br&gt;MfG
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Goswin
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Caml-list mailing list. Subscription management:
&lt;br&gt;&lt;a href=&quot;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://caml.inria.fr&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr&lt;/a&gt;&lt;br&gt;Beginner's list: &lt;a href=&quot;http://groups.yahoo.com/group/ocaml_beginners&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://groups.yahoo.com/group/ocaml_beginners&lt;/a&gt;&lt;br&gt;Bug reports: &lt;a href=&quot;http://caml.inria.fr/bin/caml-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://caml.inria.fr/bin/caml-bugs&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://old.nabble.com/Caml-Discuss2-f14016.html&quot; embed=&quot;fixTarget[14016]&quot; target=&quot;_top&quot; &gt;Caml Discuss2&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/OCaml-is-broken-tp26853708p26888101.html" />
</entry>

</feed>
