Michel Mauny | 1 Dec 1993 11:57
Picon
Picon
Favicon

Existential types variables (unix patch)

Hi,

A patch introducing a simple form of existential types (following
Laufer and Odesky's proposal) is now available for Caml-Light 0.6 on
ftp.inria.fr [192.93.2.54], file
~ftp/lang/caml-light/cl6existpatch.tar.Z

This extension provides a very simple form of abstract types and should
be suseful (at least) for teaching.

Since there is no machine-specific code in the patch, patched files
should compile on all Caml-Light 0.6 ports.

The archive essentially contains a README file, a diff file (to be given
as input to `patch'), and some documentation about this new feature.

To install it, follow the instructions given in the README file in the
archive. You'll have build a new Caml-Light system, expected to be
compatible with the old one.

What follows is an extract of the file exist.doc from the archive, to
give you an idea of the extension. More interesting examples can be
found in the archive.

Sincerely,

Michel Mauny and Francois Pottier
(Michel.Mauny <at> inria.fr, Francois.Pottier <at> ens.fr)

-----------------------------------------------------------------------------
(Continue reading)

Unknown | 3 Dec 1993 19:55

caml-light pour Linux

To: caml-list <at> margaux.inria.fr
Date: Fri, 3 Dec 93 15:54:53 MET
Cc: cridlig <at> dmi.ens.fr

  Suite a un message precedent (que je n'ai malheureusement pas conserve) dans
lequel on posait la question de savoir si Caml Light tournait sous Linux
(systeme Unix domaine public pour 386/486), je puis affirmer que la version 0.6
se compile et s'installe tres facilement, a la difference de la precedente
release.

  Mon PC tourne Linux 0.99pl13 avec 8 Mo de RAM. Le compilateur C installe est
gcc 2.5.2.

                        -- Regis Cridlig

Luis Sanchez Fernandez | 9 Dec 1993 20:36
Picon
Picon
Favicon

Re: Lazy evaluation and caml-light

Hi,

this e-mail is related to the answer to another one that I sent
a month (more or less) ago. Sorry for the delay. Because of the
delay, I'm including the previous one to help to fix the ideas.

	The problem in your program is this function~:

	let rec recursive sb sd=selec({state=Evaluated (append true sb)},sd,
	   F(fun ()->distr2(sb,{state=Evaluated (recursive sb sd)})));;

	With the recursive call you compute an infinite number of time 
	the value of
	
	(recusive sb sd) !!!!!

You are right. That was the reason because I sent the first e-mail.
I didn't know how to do it better.

	Here is a better way to write the same program:

	**********************************************************************
	type 'a stream_aux = Str of ('a * 'a stream)
	                   | Unevaluated of (unit -> 'a stream)
	                   | Not_Ready (* use for fix_point only *)

	and 'a stream == 'a stream_aux ref;;

	let rec Eval p = p := Eval' !p; !p
	where Eval' = function
(Continue reading)


Gmane