J'ai une petite question : si a est un vecteur et f une fonction, est-ce que "let b= f a", lorsque f est l'identité, permet de créer un vecteur b indépendant de a, ou est-ce qu'il faut écrire "let b= copy_vect (f a)" ?
J'ai une petite question : si a est un vecteur et f une fonction, est-ce que "let b= f a", lorsque f est l'identité, permet de créer un vecteur b indépendant de a, ou est-ce qu'il faut écrire "let b= copy_vect (f a)" ?
Salut !
Le test est très facile à faire :J'ai une petite question : si a est un vecteur et f une fonction, est-ce que "let b= f a", lorsque f est l'identité, permet de créer un vecteur b indépendant de a, ou est-ce qu'il faut écrire "let b= copy_vect (f a)" ?
Il suffit de comparer le résultat de testf (fun x -> x) (= true) et testf Array.copy (= false). Donc la réponse est non. L'identité est une identité, pas une copie ! Il faut utiliser Array.copy (vect_copy avec caml-light) pour le faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 let testf f = let x = [| 1; 2; 3 |] in let y = f x in y.(0) <- 2; x = y
Cordialement,
Cacophrène
Blog OCaml de pied en cap
Tuto Implémentation d'un lexique avec OCaml
Projets OCamlBoggle MazeML OCamlTeX
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager