* [Caml-list] Quelques questions sur Caml Light
@ 2003-04-15 9:26 Julien ÉLIE
2003-04-15 12:26 ` Damien Doligez
0 siblings, 1 reply; 3+ messages in thread
From: Julien ÉLIE @ 2003-04-15 9:26 UTC (permalink / raw)
To: caml-list
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] Quelques questions sur Caml Light
2003-04-15 9:26 [Caml-list] Quelques questions sur Caml Light Julien ÉLIE
@ 2003-04-15 12:26 ` Damien Doligez
0 siblings, 0 replies; 3+ messages in thread
From: Damien Doligez @ 2003-04-15 12:26 UTC (permalink / raw)
To: Julien ÉLIE; +Cc: caml-list
On Tuesday, April 15, 2003, at 11:26 AM, Julien ÉLIE wrote:
> 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|];;
Ce n'est pas exactement la meme sequence de nombres. En cherchant
bien, on trouve des differences.
> Je ne comprends pas très bien ce qui se passe...
Ce qui se passe, c'est que la fonction full_init prend en argument
un tableau de 55 entiers de 31 bits, et les utilise pour changer la
valeur initiale par defaut du generateur pseudo-aleatoire. Si vous
lui donnez un tableau de moins de 55 entiers ou des entiers plus petits
que 31 bits, elle fait de son mieux, mais vous risquez de changer des
bits de l'etat interne qui ne sont pas utilises pour generer des
nombres entre 0 et 1000.
-- Damien
-------------------
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
^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <010601c334d8$1c8d52f0$7115c7c2@inrialpes.fr>]
* Re: [Caml-list] Quelques questions sur Caml Light
[not found] <010601c334d8$1c8d52f0$7115c7c2@inrialpes.fr>
@ 2003-06-17 14:10 ` Jean-Baptiste Rouquier
0 siblings, 0 replies; 3+ messages in thread
From: Jean-Baptiste Rouquier @ 2003-06-17 14:10 UTC (permalink / raw)
To: caml-list
J'ai l'impression que l'on n'avait pas répondu à ces questions. Voici
quelques réponses.
1°) Pourquoi n'est-il pas possible de filtrer
avec des motifs qui sont des tableaux ?
C'est possible en OCaml.Je ne peux que te conseiller de passer à OCaml, mais
prévois un peu de temps...
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. »
Quelle doc ?
Ce doit être une erreur.
http://caml.inria.fr/man-caml/node14.11.html dit "value prefix + : int ->
int -> int"
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.
Les exceptions sont un type somme (comme
type 'a option =
|None
|Some of 'a
) même s'il est un peu particulier : on peut ajouter des constructeurs par
le mot clé exception.
Un constructeur ne peut pas être curryfié. C'est d'ailleurs pour cela que
(prefix ::)
est défférent de la série (prefix +), (prefix *.) etc.
En effet "::" est un constructeur.
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.
Ca aussi j'aimerai bien savoir.
Jean-Baptiste Rouquier.
-------------------
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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-06-17 14:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-15 9:26 [Caml-list] Quelques questions sur Caml Light Julien ÉLIE
2003-04-15 12:26 ` Damien Doligez
[not found] <010601c334d8$1c8d52f0$7115c7c2@inrialpes.fr>
2003-06-17 14:10 ` Jean-Baptiste Rouquier
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).