Je veux écrire un exemple de fonction qui prend une liste de n'importe quel type et retourne l'élément head uniquement si la liste est une liste de réels.ML comment vérifier le type de liste et donner une erreur de massage?
Dans le cas contraire, la fonction doit donner le message d'erreur
. . . E r r o r: opérateur et opérande ne sont pas. . .
datatype typeR = Real of real
fun head(xs) =
case xs of
[] => raise List.Empty |
Real (x::_) => x:real ;
Veuillez ajouter une explication de votre code. –
'(fn x: liste réelle => hd x)' ne * prend pas une liste de type *, mais seulement une liste de réels. Mais il ne renvoie * l'élément head que si la liste est une liste de réels *, et il produit une erreur de type lorsqu'il n'est pas soumis à une liste de réels. Alternativement, 'hd: real list -> real'. –