* (no subject)
@ 2000-05-05 15:55 Frederic van der Plancke
2000-05-09 9:14 ` your mail Xavier Leroy
0 siblings, 1 reply; 6+ messages in thread
From: Frederic van der Plancke @ 2000-05-05 15:55 UTC (permalink / raw)
To: 'caml-list@inria.fr'
Bonjour,
[french]
Peut-on compiler OCAML en executables Windows/x86 natifs ?
Quels programmes externes sont nécessaires pour cela ?
[english]
Can OCaml programs be compiled to native Windows(x86) executables ?
What external programs are needed ? Can Microsoft Visual C++ be of
some help ?
Sorry if the answer is well known. I couldn't figure out from the docs.
--
Frédéric van der Plancke <fvdp@decis.be>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: your mail
2000-05-05 15:55 Frederic van der Plancke
@ 2000-05-09 9:14 ` Xavier Leroy
0 siblings, 0 replies; 6+ messages in thread
From: Xavier Leroy @ 2000-05-09 9:14 UTC (permalink / raw)
To: fvdp, 'caml-list@inria.fr'
> Can OCaml programs be compiled to native Windows(x86) executables ?
Yes, you can produce standalone Win32 executables, either using the
bytecode compiler ocamlc with the -custom option, or using the
native-code compiler ocamlopt.
> What external programs are needed ? Can Microsoft Visual C++ be of
> some help ?
>From the README.win32 file:
Linking Caml bytecode with C code (ocamlc -custom) requires the
Microsoft Visual C++ compiler version 6.
The native-code compiler (ocamlopt) requires Visual C++ version 6
and the Microsoft assembler MASM version 6.11 or later.
MASM can be downloaded for free from Microsoft's Web site;
see the comp.lang.asm.x86 FAQ for directions, or
http://www.cs.uu.nl/wais/html/na-dir/assembly-language/x86/microsoft.html
Hope this helps,
- Xavier Leroy
^ permalink raw reply [flat|nested] 6+ messages in thread
* (no subject)
@ 1997-10-22 7:29 MIFUKU Assin-Na-Idia
1997-10-22 8:37 ` your mail Pierre Weis
0 siblings, 1 reply; 6+ messages in thread
From: MIFUKU Assin-Na-Idia @ 1997-10-22 7:29 UTC (permalink / raw)
To: caml-list
Messieurs,
Je suis interessé à Camlwin que vous developpez. Mais il me manque sa
documentation.Pouvez-vous, si possible, me fournir cette documentation si
precieuse pour moi.
Elle pourra être envoyée à mon adresse que voici:
Mifuku Assin-na-Idia
Rue de l'Economie n° 9
1000 Bruxelles.
Voici mon e-mail: amifuku@info.fundp.ac.be
D'avance merci.
Mifuku Assin.
^ permalink raw reply [flat|nested] 6+ messages in thread
* (no subject)
@ 1997-02-25 17:27 Erwan David
1997-02-26 8:36 ` your mail Pierre Weis
0 siblings, 1 reply; 6+ messages in thread
From: Erwan David @ 1997-02-25 17:27 UTC (permalink / raw)
To: caml-list
J'ai voulu recompiler un programme fait en 0.7 (je crois) avec le
compilateur 0.73 : apparemment certaines fonctions ont changé de nom: j'ai
l'erreur
camlc -g -W -c main.ml
File "main.ml", line 9, characters 7-43:
> format__set_formatter_output_channel stdout;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The value identifier format__set_formatter_output_channel is unbound.
Y-a-t il eu changement quelque part ? faut-il que je récupère un nouveau
manuel de référence ?
--
Erwan David
Université d'Évry, France
Je ne parle qu'en mon nom propre, et encore pas toujours.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: your mail
1997-02-25 17:27 Erwan David
@ 1997-02-26 8:36 ` Pierre Weis
0 siblings, 0 replies; 6+ messages in thread
From: Pierre Weis @ 1997-02-26 8:36 UTC (permalink / raw)
To: Erwan David; +Cc: caml-list
> J'ai voulu recompiler un programme fait en 0.7 (je crois) avec le
> compilateur 0.73 : apparemment certaines fonctions ont changé de nom: j'ai
> l'erreur
> camlc -g -W -c main.ml
> File "main.ml", line 9, characters 7-43:
> > format__set_formatter_output_channel stdout;
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> The value identifier format__set_formatter_output_channel is unbound.
Yes, some small discrepancies in the naming conventions have been
corrected in the format library (see format.mli). In this case output
has been change into out, since output channel are named out channels
in Caml.
(*** Redirecting formatter output *)
value set_formatter_out_channel : out_channel -> unit;;
(* Redirect the pretty-printer output to the given channel. *)
In addition, multiple formatting in parallel on several output
channels are now available (once more, see format.mli):
(*** Multiple formatted output *)
type formatter;;
(* Abstract data type corresponding to a pretty-printer and
all its machinery.
Defining new pretty-printers permits the output of
material in parallel on several channels.
Parameters of the pretty-printer are local to the pretty-printer:
margin, maximum indentation limit, maximum number of boxes
simultaneously opened, ellipsis, and so on, are specific to
each pretty-printer and may be fixed independantly. *)
Enjoy it!
Pierre Weis
INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis
^ permalink raw reply [flat|nested] 6+ messages in thread
* (no subject)
@ 1996-02-19 14:57 Michel Levy
1996-02-20 18:48 ` your mail Pierre Weis
0 siblings, 1 reply; 6+ messages in thread
From: Michel Levy @ 1996-02-19 14:57 UTC (permalink / raw)
To: caml-list
Pouvez-vous, je vous prie, répondre à quelques questions à propos de camllight
1) L'expression
let rec x = 1 :: x ;;
est de type int list. Son exécution crée-t-elle une fermeture ?
Je lis d'ailleurs dans le "Doc et user's manual" : the behavior of other
forms of let rec (formes autres que des définitions de fonction) is
implementation-dependant.
2) Pourquoi le typeur accepte la définition récursive précédente mais
21)refuse la modification suivante du programme minicaml (cf Le langage
caml de Pierre Weiss et Xavier Leroy p 352) :
let rec env_étendu =
(déf.Nom, Val_fermeture
{ Définition = liste_de_cas ; Environnement = env_étendu}) ::
env_courant
sous le prétexte que déf.Nom n'est pas acceptable dans une définition récursive
22)accepte par contre
let nom = déf.Nom in
let rec env_étendu =
(nom, Val_fermeture
{ Définition = liste_de_cas ; Environnement = env_étendu}) ::
env_courant
Remarque : mon but était d'éviter les types mutables pour représenter les
environnements.
Michel Levy
L.S.R.
BP53x - 38041 Grenoble cedex - France
Tel : 76827246
e.mail : Michel.Levy@imag.fr
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: your mail
1996-02-19 14:57 Michel Levy
@ 1996-02-20 18:48 ` Pierre Weis
0 siblings, 0 replies; 6+ messages in thread
From: Pierre Weis @ 1996-02-20 18:48 UTC (permalink / raw)
To: Michel Levy; +Cc: caml-list
> 1) L'expression
> let rec x = 1 :: x ;;
> est de type int list. Son exécution crée-t-elle une fermeture ?
Il n'y a pas lieu de cre'er de fermeture car cette de'finition
re'cursive n'est pas la de'finition d'une fonction mais la de'finition
d'une liste. Ce genre de de'finitions re'cursives sont qualifie'es de
``de'finitions re'cursives de valeurs'' dans le jargon des
imple'menteurs de ML. En effet elles posent des proble`mes de
compilation (voir ci-dessous) alors que les de'finitions re'cursives
de fonction s'imple'mentent sans proble`me.
Ici la de'finition cre'e une cellule de liste dont la queue pointe
vers elle-me^me: on obtient une liste circulaire ne comportant que des
1.
> Je lis d'ailleurs dans le "Doc et user's manual" : the behavior of other
> forms of let rec (formes autres que des définitions de fonction) is
> implementation-dependant.
>
> 2) Pourquoi le typeur accepte la définition récursive précédente mais
Le typeur accepte cette de'finition parcequ'elle est bien type'e.
Le proble`me des de'finitions re'cursives de valeurs n'est pas d'abord
un proble`me de typage mais surtout un proble`me de compilation.
En effet la de'finition re'cursive de valeur la plus ge'ne'rale s'e'crit:
let rec x = F (x);;
Calculer une valeur pour x revient finalement a` de'terminer le point
fixe de la fonction F, ce qui n'est pas e'vident.
Par exemple pour let rec x = 1 :: x, il faut trouver le point fixe de
(function y -> 1 :: y).
Ce proble`me est clairement non re'soluble en ge'ne'ral: soit parceque
F n'admet pas de point fixe (let rec x = x + 1;;), soit parcequ'elle en
admet plusieurs (let rec x = x * x;;), soit qu'on ne sait absolument
pas comment en trouver un s'il existe.
On de'termine cependant une large classe de fonctions F pour lesquels
il y a un unique point fixe qu'on obtient en outre de fac,on uniforme:
-- classe 0 : F est une fonctionnelle (on est en train de de'finir une
fonction).
Ex: let rec fact = function x -> ... fact (x - 1)
F = function f -> function x -> ... f (x - 1)
On de'montre que F admet un unique point fixe. Pratiquement, on le
trouve en fabriquant une fermeture cyclique.
-- classe 1 : l'expression F (x) ne fait intervenir que des
constructeurs de valeurs mais aucun appel de fonction, et en outre la
valeur de x est ne'cessairement alloue'e en me'moire et posse`de une
taille pre'visible par le compilateur.
La classe 0 est la plus simple et la seule supporte'e par tous les
compilateurs; la classe 1 est celle accepte'e par Caml Light.
Dans une de'finition de classe 1 on peut calculer F (x) sans
connai^tre la valeur de x, on a seulement besoin de l'adresse me'moire
ou` cette valeur sera range'e. En ce cas, le compilateur re'serve la
place correspondante pour x, calcule F (x) et e'crit la valeur obtenue
a` l'endroit re'serve' pour x.
N'appartiennent pas a` la classe 1:
let rec x = 1 + x;; (appel de fonction)
let rec x = x;; (type (donc taille de x) inconnu)
let rec x = 1;; (type int: x n'est pas alloue')
La de'finition let rec x = 1 :: x entre dans la classe 1: x est
force'ment une liste non vide. On re'serve donc une cellule de liste
dans la me'moire, appelons la @x. Puis on calcule la liste 1 ::
@x. Cette liste est e'crite a` l'adresse de x: on e'crit 1 dans le
premier champ de la cellule @x, et @x dans le deuxie`me, ce qui boucle
la liste.
> 21)refuse la modification suivante du programme minicaml (cf Le langage
> caml de Pierre Weiss et Xavier Leroy p 352) :
>
> let rec env_étendu =
> (déf.Nom, Val_fermeture
> { Définition = liste_de_cas ; Environnement = env_étendu}) ::
> env_courant
>
> sous le prétexte que déf.Nom n'est pas acceptable dans une définition récursive
En effet un acce`s a` l'inte'rieur d'une structure de donne'es n'est
pas tole're', car il est susceptible d'acce'der a` une partie de la
valeur de'finie re'cursivement qui n'est pas encore significative
(c'est-a`-dire pas encore construite). Ce cas est analogue a` l'acce`s
a` la te^te d'une liste non encore construite, par exemple let rec x =
(hd x) :: x;;
> 22)accepte par contre
>
> let nom = déf.Nom in
> let rec env_étendu =
> (nom, Val_fermeture
> { Définition = liste_de_cas ; Environnement = env_étendu}) ::
> env_courant
En effet, vous avez fait disparai^tre l'acce`s a` l'inte'rieur de
de'f, il est maintenant clair (pour le compilateur) que seule
l'adresse de env_e'tendu est ne'cessaire pour calculer l'expression
de'finissante.
> Remarque : mon but était d'éviter les types mutables pour représenter les
> environnements.
Nous n'avions pas utilise' la de'finition re'cursive de valeurs pour ne
pas introduire dans notre livre d'extensions propres a` Caml Light. En
outre boucler la fermeture ``a` la main'' est plus pe'dagogique ici,
pluto^t que de de'finir les fonctions re'cursives directement avec un
let rec de Caml.
En outre, utiliser des structures mutables est la fac,on la plus
ge'ne'rale de de'finir re'cursivement des valeurs.
Et finalement: faut-il avoir peur des structures de donne'es mutables ?
Pierre Weis
INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis
^ permalink raw reply [flat|nested] 6+ messages in thread
* (no subject)
@ 1992-11-27 15:24
1992-11-27 15:32 ` your mail Michel Mauny
0 siblings, 1 reply; 6+ messages in thread
From: @ 1992-11-27 15:24 UTC (permalink / raw)
To: caml-list
From: helary@irisa.fr (Jean-Michel Helary)
Subject: external line editor dans camllight
Message-ID: <1992Nov27.151952.20105@irisa.fr>
Date: Fri, 27 Nov 92 15:19:52 GMT
Bonjour,
J'utilise camllight (version 0.5 Unix) pour l'enseignement de la
programmation en cycle A du CNAM a Rennes. Pour faciliter le travail
des auditeurs, je souhaiterais qu'ils puissent utiliser des facilites
d'edition integree lorsqu'ils sont en TP.
A la page 243 du manuel camllight version 0.5, (cahpter 26) il est
fait mention de fep. Or nous ne possedons pas cet outil (fep: Command
not found.).
Peut-on se le procurer, si oui comment, sinon quel outil equivalent
est diponible?
(les auditeurs du cnam, habitues a des environnements de qualite -la
plupart ont deja utilise turbo-qqchose - prennent assez mal la
pauvrete de l'environnement standard de camllight, et ce d'autant plus
qu'ils sont deja passablement deroutes par ce style de programmation
auquel ils ne sont pas habitues... Si les choses ne s'ameliorent pas
sur le plan de l'environnement, nous choisirons Scheme l'annee
prochaine. Mais ce serait dommage, car les qualites pedagogiques de
caml sont a mon avis superieures a celle de Scheme, mais ceci est un
autre debat!)
Jean-Michel Helary
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2000-05-11 12:50 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-05-05 15:55 Frederic van der Plancke
2000-05-09 9:14 ` your mail Xavier Leroy
-- strict thread matches above, loose matches on Subject: below --
1997-10-22 7:29 MIFUKU Assin-Na-Idia
1997-10-22 8:37 ` your mail Pierre Weis
1997-02-25 17:27 Erwan David
1997-02-26 8:36 ` your mail Pierre Weis
1996-02-19 14:57 Michel Levy
1996-02-20 18:48 ` your mail Pierre Weis
1992-11-27 15:24
1992-11-27 15:32 ` your mail Michel Mauny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).