Document lu mais pas compilé par caml
Bonjour,
Je suis en train de réaliser un exposé. Dans celui-ci, je souhaite réaliser un programme en caml light, seulement je rencontre un problème. J'ai créé un fichier catalogue.ml dans lequel j'ai mis beaucoup de vecteurs avec des types abréviation de float ou int.
Je fais appel à ce document par des include dans mon programme principale.
Mon problème est le suivant : le document est tellement gros que caml bug une fois sur deux à la compilation (pour un ordre d'idée, mes vecteurs ont des tailles allant de 4 à 2000 valeurs)
Est-il possible que mon programme ne fasse que aller chercher les info dans catalogue mais ne compile pas le catalogue?
J'ai vu une fonction compile mais je ne comprend pas comment elle fonctionne et je ne sais pas trop non plus si cette fonction fais ce que je veux.
Merci
Document lu mais pas compilé par caml
Bonjour,
Merci pour la réponse.
Juste pour être sur : que l'on travail en Ocaml ou en caml light c'est pareil? Parce que je ne connaît que caml light.
Par ailleurs, j'ai vu dans un livre quelque chose sur parse, camllex et camllyacc. Ce livre n'est pas franchement génial pour la clarté des explications sur le fonctionnement de caml light. Est-ce bien de ce parse dont il est question, car je n'ai pas du tout compris comment il fonctionne.
Pour la présentation actuelle de mon catalogue, cela donne ça :
type de == float;;
type mg == int;;
et en suite il y a une vingtaine de tableaux du style de ceux ci-desous :
let (A : de vect) = [|6.98298;14.65140;39.705945;33.242451;357.266|];;
let (B : de vect) = [|6.82136;14.65451;9.705945;353.242451;357.2366|];;
(Certains tableaux contiennent 2000 valeurs)
Le fichier catalogue est inclue par des include dans le fichier principale où se trouvent des fonctions qui vont chercher seulement certains tableaux et s'applique sur ces tableaux sélectionnés par une boucle à tout le tableau.
Le type mg peut être retiré si besoin, car il ne sert pas dans le catalogue même, mais dans la suite du programme.
Merci
Document lu mais pas compilé par caml
Je ne comprend pas très bien en quoi la manip qu'il faut faire ne fait pas de compilation, mais seulement de la lecture.
Je viens d'essayer de faire la fonction de lecture du fichier, et cela donne cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| let lect () =
let a = input_value (open_in "catalogue.txt") in
let taille = read_int a in
let catalog = make_vect taille [|0.|] in
for i = 0 to (taille-1) do
let tailleTableau = read_int a in
let tableau = make_vect tailleTableau 0. in
for j = 0 to (tailleTableau-1) do
tableau.(j) <- read_float a
done;
catalog.(i) <- tableau
done;
catalog;;
lect ();; |
Le terminal me renvoie :
lect : unit -> float vect vect = <fun>
Exception non rattrapée: Failure "intern: bad object"
Je ne comprend pas pourquoi.
Je ne suis pas sur de ma fonction, car je n'ai jamais utilisé les canaux, les open_ in, input_value etc. J'ai essayer de faire ce que je pouvais avec le livre que j'ai, mais ces fonctions ne sont pas très claires.
Document lu mais pas compilé par caml
Bonsoir,
Merci à tous, c'est super, ça marche impeccable. J'ai pas le temps de faire load que le programme a fini de s'exécuter. Alors qu'avant, quand ça bugait pas, il fallait attendre longtemps.
Le code de Cacophrene marche. J'ai dû le réadapter, car je ne connaissais pas toutes les fonctions utilisées même si je comprenais l'idée.
Merci encore.