caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Primitives d'interrogations sur les types
@ 1998-10-12  8:28 Emmanuel Dorlet
  1998-10-16 15:23 ` Xavier Leroy
  0 siblings, 1 reply; 2+ messages in thread
From: Emmanuel Dorlet @ 1998-10-12  8:28 UTC (permalink / raw)
  To: Liste-Caml

Français
======
Pour les besoins des dévellopements autour du projet ELAN, nous aurions
(en première analyse)
besoin d'accéder par programme aux définitions des types et des objets
d'un programme Ocaml:
    - type (nom du type) d'une variable
    - nom et type des champs d'un type structuré
    - classe d'une instance
    - nom et type des attributs d'une instance de classe
    - méthodes d'une classe

Ceci est envisagé dans un premier temps pour permettre à une application
située en frontale des codes (c'est
à dire qu'un top-level Ocaml est lié aux codes de calcul C / Fortran) et
qui dispose d'un déclaration Ocaml
des type de données en entrée/sortie de ces codes, de générer une
interface de saisie (via un outil d'IHM ad-hoc)
pour les entrées ou de visualisation pour les sorties. Il est clair que
nous aimerions que la déclaration de type
ou d'objet Ocaml soit auto-suffisante.
Passer par une définition formelle des structures dans un pseudo-langage
(un IDL quelconque) semble bien
inutile, puisque l'on dispose d'une définition claire et complète avec
Ocaml!

Il semble bien que le top-level dispose de tels connaissances, puisqu'il
sait les afficher!

Est-ce un besoin qui vous semble raisonnable et d'un intérêt général?
Envisageriez-vous de mettre à disposition un bibliothèque d'API à ces
informations?

============================================================
English (short version)
----------------------

We need to access dynamicaly in a top-level to informations on Ocaml
types and objects:
    - type (name of) of a variable
    - names and types of structure fields
    - class of an instance
    - name and type of a class
Those informations seems to be available in the top-level kernel !
Is there a hope that an API library to those informations is juged of a
wide interest and
that it would be made available in a futur release ?

-----------------------------
Emmanuel Dorlet
CEA centre de Saclay
DRN/DMT/SYSCO
91191 GIF sur Yvette
email: Emmanuel.Dorlet@cea.fr
tel: (33) 01 69 08 91 17
sec: (33) 01 69 08 91 10
fax: (33) 01 69 08 96 96
-----------------------------







^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Primitives d'interrogations sur les types
  1998-10-12  8:28 Primitives d'interrogations sur les types Emmanuel Dorlet
@ 1998-10-16 15:23 ` Xavier Leroy
  0 siblings, 0 replies; 2+ messages in thread
From: Xavier Leroy @ 1998-10-16 15:23 UTC (permalink / raw)
  To: Emmanuel.Dorlet, Liste-Caml

[English summary: infos such as "what is the type of this variable?"
and "what are the methods of this class?" are not available at
run-time in OCaml programs, but can be recovered from signatures of
compilation units: either .mli source files or .cmi compiled interfaces.]

> Pour les besoins des dévellopements autour du projet ELAN, nous
> aurions (en première analyse) besoin d'accéder par programme aux
> définitions des types et des objets d'un programme Ocaml:
>     - type (nom du type) d'une variable
>     - nom et type des champs d'un type structuré
>     - classe d'une instance
>     - nom et type des attributs d'une instance de classe
>     - méthodes d'une classe

Ces informations ne sont pas attachées aux valeurs manipulées à
l'exécution par un programme Caml.  On conserve quelques infos de
"type" de très bas niveau pour guider le GC et des primitives comme
output_value, mais ce n'est pas ce que vous voulez.

Les informations que vous recherchez sont bien sûr maintenues à jour
et utilisées par le typeur et le compilateur.  Les infos concernant
les définitions exportées par une unité de compilation (un fichier
.ml) sont sauvées dans le fichier .cmi correspondant.  En fait, le
.cmi est une représentation binaire de la signature de l'unité de
compilation: ou bien celle donnée dans le fichier d'interface .mli,
ou bien celle inférée par le système à partir du fichier
d'implémentation .ml si aucun .mli n'est fourni.  Cette signature
contient toutes les infos que vous recherchez pour les définitions
exportées.

Les infos concernant les définitions locales à l'unité de compilation
ne sont sauvées nulle part, puisqu'elles ne servent pas à typer
d'autres unités de compilation.

> Il semble bien que le top-level dispose de tels connaissances, puisqu'il
> sait les afficher!

Le toplevel a accès à toutes les informations de typage sur les
définitions entrées au toplevel, ainsi qu'aux infos contenues dans les
fichiers .cmi.  Il utilise cette info de typage pour afficher les
valeurs calculées par les phrases toplevel, en particulier.  Mais
encore une fois cette info de typage n'est pas attachée aux valeurs
elles-même.

> [Génération de code à partir de déclarations de types ou de classes Caml]
> Est-ce un besoin qui vous semble raisonnable et d'un intérêt général?
> Envisageriez-vous de mettre à disposition un bibliothèque d'API à ces
> informations?

Nous n'avons pas d'API ou d'outils tout faits pour cela.  Il n'est pas
difficile d'extraire des sources du compilateur un parser de fichiers .mli
ou .ml, qui vous donne accès à la syntaxe abstraite des définitions de
types et de classes (regarder le sous-répertoire parsing/ dans les sources.)

Il est possible également d'extraire un programme pour lire les .cmi
(l'info de type "pré-digérée"), bien que ces derniers utilisent des
représentations internes pour les types qui sont d'emploi délicat
(voir les fichiers typing/typedtree.mli, typing/env.mli et
typing/ctype.mli p.ex.).  Mieux vaut à mon avis repartir des fichiers
source et de l'a.s.t. de parsing (parsing/parsetree.mli), beaucoup
plus simple.

- Xavier Leroy





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1998-10-16 15:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-10-12  8:28 Primitives d'interrogations sur les types Emmanuel Dorlet
1998-10-16 15:23 ` Xavier Leroy

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).