Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Quelques questions sur Caml Light
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Julien_ÉLIE <julien.elie@w...>
Subject: [Caml-list] Quelques questions sur Caml Light
Bonjour,

I read that messages could be written either in
French or in English. However, if you want me to
translate it into English or to write in English,
I shall do it. You can also answer in English
if you prefer.

J'utilise la version 0.74 de Caml Light.

J'ai plusieurs questions que je collige sur ce
langage depuis quelque temps. Je vous remercie
par avance pour vos réponses et j'espère que
vous ne m'en voudrez pas pour autant de questions
en un seul message.


1°) Pourquoi n'est-il pas possible de filtrer
avec des motifs qui sont des tableaux ?

let filtre = function
    [||] -> 0
  | _ -> 1;;

est par exemple refusé syntaxiquement par Caml Light
(mais pas par Objective Caml).
Qu'est-ce qui ne convient pas ?
(bien sûr, on peut remplacer le premier motif par
« tab when vect_lenght tab = 0 », mais je ne puis
pas filtrer par exemple [|3;5;8|] ou tout autre tableau
pour autant : une garde est alors nécessaire).



2°) Toujours dans les reconnaissances de motifs, est-il possible
de reconnaître un nombre important de nombres ?
L'utilisation de :
let f = function `0`..`9` -> 0;;
n'est pas très satisfaisante puisque c'est une fonction
« char -> int ».

Comment faire une reconnaissance de 0 à 9 en nombres entiers ?
du type :
let f = function 0|1|2|3|4|5|6|7|8|9 -> 0;;

Peut-être n'est-ce pas faisable dans une telle construction
(il faut alors retourner au « if »).



3°) Pourquoi est-il indiqué dans la documentation :

« value prefix + : float -> float -> float
value prefix +. : float -> float -> float
value add_float : float -> float -> float 
Addition. »

Je suis d'accord pour « prefix +. » et « add_float »
mais pourquoi la première ligne définissant « prefix + »
alors que c'est une fonction « int -> int -> int » ?
Elle ne fonctionne pas sur des flottants...



4°) Quelle est la technique pour manipuler avec des
nombres binaires les préfixes « lor », « land », « lxor »
et la fonction « lnot » ?
J'aimerais en fait faire :
« 0b111 lor 0b1010;; » et obtenir « 0b1111 »
(et non 15 en décimal)
N'existe-t-il pas une fonction prédéfinie pour changer
la base d'un nombre ?



5°) N'est-il pas possible de définir une exception qui
prend en charge plusieurs paramètres ?
Le mieux que je puisse faire est :
« exception erreur of int*int;; »
pour avoir deux entiers, mais c'est sous forme de paire.



6°) Comment fonctionnent les deux fonctions :
format_int : string -> int -> string
format_float : string -> float -> string

Je ne suis pas arrivé à les trouver dans le code source
(modules int/float).



7°) À quoi sert la fonction « random__full_init » ?
J'ai beau modifier la valeur donnée au « seed »,
j'obtiens toujours la même séquence de nombres...

random__full_init [|3;6|];;
for i = 1 to 100 do
  print_int (random__int 1000);
  print_string " ";
done;;

renvoie les mêmes nombres que si j'avais auparavant fait :
random__full_init [|5150;615|];;
ou encore :
random__full_init [|3;6;5;4;8;1;4;2;52;61|];;

Je ne comprends pas très bien ce qui se passe...



8°) Où se procurer la version 0.75 précompilée de
Caml Light pour Windows ?
Elle est disponible pour Unix, mais pas pour Windows...
À ce propos, quelles sont les nouveautés de la version 0.75
par rapport à la version précédente 0.74 ?
Le fichier « Changes » ne précise rien.


Merci d'avance pour toutes vos réponses.

Cordialement,

Julien ÉLIE

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners