Fonction polymorphe

Hubert Canon (canon@poly.polytechnique.fr)
Wed, 24 Jan 1996 19:47:22 +0100 (MET)

From: Hubert Canon <canon@poly.polytechnique.fr>
Message-Id: <199601241847.TAA02621@poly.polytechnique.fr>
Subject: Fonction polymorphe
To: caml-list@margaux.inria.fr
Date: Wed, 24 Jan 1996 19:47:22 +0100 (MET)

Un bug probable de caml-light : j'ai une fonction qui devrait etre
polymorphe, mais elle change de type au premier appel :

Avec caml light 7beta2 (le code n'est pas de moi) :

#let permutations =
let rec permut fixe = fun
[] [] -> [fixe] |
debut [] -> [] |
debut (x :: suite) -> (permut (fixe @ [x]) []
(debut @ suite)) @
(permut fixe (debut @ [x]) suite)
in
permut [] [];;

- : permutations : '_a list -> '_a list list = <fun>

#permutations ["3";"456";""];;
- : string list list =
[["3"; "456"; ""]; ["3"; ""; "456"]; ["456"; "3"; ""]; ["456"; ""; "3"];
[""; "3"; "456"]; [""; "456"; "3"]]

#permutations;;
- : string list -> string list list = <fun>

#permutations [1;2];;
Entrée interactive:
>permutations [1;2];;<EOF>
> ^^^^^^^^^^
Cette expression est de type int list,
mais est utilisée avec le type string list.

-- 
-------------------------- Hubert Canon --------------------------
        Email : canon@poly.polytechnique.fr
        WWW   : http://www.polytechnique.fr/poly/~canon/
------------------------------------------------------------------