caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Re:  affichage de liste
@ 1996-02-22 11:45 pbrisset
  0 siblings, 0 replies; 4+ messages in thread
From: pbrisset @ 1996-02-22 11:45 UTC (permalink / raw)
  To: caml-list; +Cc: pbrisset

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1162 bytes --]


> let rec integer_interval n m =
>   if m < n then []
>   else n :: ( integer_interval (n+1) m);;
> 
> ou de sa version imperative
> 
> let intervalle_entier n m =
>          let accu= ref [] in
>                 for i =m downto n do
>                 accu := i :: !accu done;
>         !accu ;;
> 
> (evidemment, j'entend d'ici les remarques : la premiere version est bien
> plus claire et la deuxieme plus rapide et les reponses "c'est meme pas vrai
> et puis on est dans les annees 90" ....)
> la n'est pas la question (ceci dit si vous voulez reagir...)

Et avec le récurseur du système T de Gödel (ca fait riche,
n'est-ce-pas), c'est pas plus joli ?

#let rec recurseur z f = function 
   0 -> z
 | n -> f (n-1) (recurseur z f (n-1));;
recurseur : 'a -> (int -> 'a -> 'a) -> int -> 'a = <fun>

#let intervalle n m = recurseur [] (fun k reste -> (m-k)::reste) (m-n+1);;
intervalle : int -> int -> int list = <fun>

#intervalle 10 20;;
- : int list = [10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20]


> Luc ALBERT
> prof prepa Lycee Charlemagne

 J'ai malheureusement peur que les élèves ne soient pas très sensibles
à cette esthétique...

--Pascal Brisset





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

* Re: affichage de liste
  1996-02-21 22:31 Luc ALBERT
  1996-02-22 10:37 ` Pierre Weis
@ 1996-02-22 11:22 ` Michel Mauny
  1 sibling, 0 replies; 4+ messages in thread
From: Michel Mauny @ 1996-02-22 11:22 UTC (permalink / raw)
  To: Luc ALBERT; +Cc: caml-list


(Englih version below).

Luc Albert demandait:

> PS : existe-t- il un style latex2e pour une belle inclusion de  programmes
> caml ? (avec des mots cles
> en gras etc ...)

J'ai realise un indenteur de Caml-Light qui peut generer du LaTeX a
partir de programmes Caml (eventuellement inclus dans un fichier
LaTeX): mots-cles en gras, commentaires en italique, vraies fleches,
etc. Marche avec Latex, et Latex2e, sous Unix.

Je peux l'envoyer a qui me le demande. (Commentaires bienvenus, bien sur.)

Des que j'aurai:
  - termine la doc
  - fait en sorte qu'il accepte la syntaxe de Caml-Light 0.71 (pour le
moment, il n'accepte que la syntaxe 0.6)

je le mettrai en distribution par ftp.

----------
Luc Albert asked:

> PS: is there a latex2e style to include in an esthetic way caml programs in
> documents ? (with bold-faced key words, smart indentation etc ...)

I wrote a Caml-Light re-indenter that generates either text or LaTeX
from Caml-Light programs (possibly included into LaTeX
documents). That gives boldface keywords, real arrows, italicized
comments, and so on. Work with LaTeX, and LaTeX2e, under Unix.

I can send it to anybody interested. (Feedback is welcome, of course.)

As soon as:
  - the documentation is complete
  - this program accepts Caml-Light 0.71 syntax (currently limited to
0.6),

I'll put it on our ftp server.

-- 
Michel





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

* Re: affichage de liste
  1996-02-21 22:31 Luc ALBERT
@ 1996-02-22 10:37 ` Pierre Weis
  1996-02-22 11:22 ` Michel Mauny
  1 sibling, 0 replies; 4+ messages in thread
From: Pierre Weis @ 1996-02-22 10:37 UTC (permalink / raw)
  To: Luc ALBERT; +Cc: caml-list


[English version below]

> y-a-t-il une limite a l'affichage d'une liste ?

En effet l'imprimeur du système interactif est confronté au problème
de l'impression de structures de données bouclées, et il utilise un
mécanisme de troncature pour assurer la terminaison de
l'impression. Cette troncature met en jeu deux compteurs, l'un
<CODE>print_depth</CODE> mesure la profondeur d'imbrication des
données imprimées (par exemple un élément d'une liste de liste se
trouve à profondeur 2), l'autre <CODE>print_length</CODE> mesure plus
simplement le nombre de noeuds imprimés (par exemple chaque élément
imprimé dans une liste incrémente la valeur de
<CODE>print_length</CODE>). Par de'faut <CODE>print_depth</CODE> vaut 100
et <CODE>print_length</CODE> 300. On fixe les valeurs de ces
variables avec les fonctions <CODE>set_print_depth</CODE> et
<CODE>set_print_length</CODE>.

> PS : existe-t- il un style latex2e pour une belle inclusion de  programmes
> caml ? (avec des mots cles en gras etc ...)
> Luc ALBERT

Une interface entre Caml et LaTex est livrée avec la distribution du
système dans le répertoire <CODE>contrib/caml-tex</CODE> sous la
forme d'une commande <CODE>caml-tex</CODE>. C'est un filtre qui extrait les
phrases Caml d'un fichier LaTex argument, les évalue et insère leurs
sorties dans le fichier LaTex résultat.
(Ce filtre est écrit en Perl et nécessite donc Perl version 4 installé
sur votre machine).

En ce qui concerne plus spe'cifiquement l'impression de programmes
Caml en LaTex, je crois que Michel Mauny a mis au point un syste`me
d'indenteur et l'environnement LaTex associe' qui devrait pourvoir
vous satisfaire.

[English]
> Is there a limit to output-printing ?

The toplevel pretty-printer must print cyclic values.
So the pretty-printer uses a truncation mecanism to ensure
termination. This truncation involves two counters:
<CODE>print_depth</CODE> mesures nesting depth of values to print (for
instance an element within a list within a list has depth 2);
<CODE>print_length</CODE> mesures the number of node printed so far
(for instance each element printed in a list increments
<CODE>print_length</CODE>). The default value of
<CODE>print_depth</CODE> is 100, the default value of
<CODE>print_length</CODE> is 300. You can change these values using
the functions <CODE>set_print_depth</CODE> and <CODE>set_print_length</CODE>.

> PS: is there a latex2e style to include in an esthetic way caml programs in
> documents ? (with bold-faced key words, smart indentation etc ...)
> Luc ALBERT

An interface between Caml and LaTex is distributed in the
<CODE>contrib/caml-tex</CODE> directory, as a command
<CODE>caml-tex</CODE>. This is a filter that extracts Caml phrases
embedded in its LaTex file argument, evaluates them, and insert the
outcome of the evaluation into its LaTex output file.
(The filter is written in Perl, so you'll need Perl version 4 installed
on your machine.)

For pretty-printing of Caml programs into LaTex, Michel Mauny wrote a
pretty-printing system and a LaTex environment that could be useful.

Pierre Weis

INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis







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

* affichage de liste
@ 1996-02-21 22:31 Luc ALBERT
  1996-02-22 10:37 ` Pierre Weis
  1996-02-22 11:22 ` Michel Mauny
  0 siblings, 2 replies; 4+ messages in thread
From: Luc ALBERT @ 1996-02-21 22:31 UTC (permalink / raw)
  To: caml-list


Bonjour voici une question suite a un echange mail avec P Dumas (inria) :
je cree avec caml une liste d'entiers assez longue par exemple a l'aide de
la fonction :

let rec integer_interval n m =
  if m < n then []
  else n :: ( integer_interval (n+1) m);;

ou de sa version imperative

let intervalle_entier n m =
         let accu= ref [] in
                for i =m downto n do
                accu := i :: !accu done;
        !accu ;;

(evidemment, j'entend d'ici les remarques : la premiere version est bien
plus claire et la deuxieme plus rapide et les reponses "c'est meme pas vrai
et puis on est dans les annees 90" ....)
la n'est pas la question (ceci dit si vous voulez reagir...)
quand je les lance entre 1 et 1000 je n'obtiens que le debut de la liste
(les 100  premiers termes
sont affiches) : y-a-t-il une limite a l'affichage d'une liste ?
merci
**************************
Luc ALBERT
prof prepa Lycee Charlemagne
Paris 04
**************************

PS : existe-t- il un style latex2e pour une belle inclusion de  programmes
caml ? (avec des mots cles
en gras etc ...)

POOR ENGLISH VERSION
 A  question about lists printing. Here is the code of two CAML functions

let intervalle_entier n m =
         let accu= ref [] in
                for i =m downto n do
                accu := i :: !accu done;
        !accu ;;
 or the recursive version
let rec integer_interval n m =
  if m < n then []
  else n :: ( integer_interval (n+1) m);;

the matter is not the comparison between the two versions of the function
but deals with the printing of the result.
If one executes these functions with arguments n=1 and m=1000 for instance,
only the beginning of the
list is printed (the first 100 terms I think). Is there a limit to output-
printing ?
Thanks

**************************
Luc ALBERT
Teacher at Lycee Charlemagne
Paris  (France ! yeah)
**************************
PS: is there a latex2e style to include in an esthetic way caml programs in
documents ? (with bold-faced key words, smart indentation etc ...)







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

end of thread, other threads:[~1996-02-22 12:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-02-22 11:45 affichage de liste pbrisset
  -- strict thread matches above, loose matches on Subject: below --
1996-02-21 22:31 Luc ALBERT
1996-02-22 10:37 ` Pierre Weis
1996-02-22 11:22 ` 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).