2017-10-14 9 views
1

Dans le langage MLfonction de la langue ML val » * a » * int -> bool

Suppose f(x,y,z) est une fonction. Donner un exemple d'une définition de f qui ferait que l'argument de f ait le type: a’ * a’ * int.

exemple de code

fun f1 (x,y,z) = z<5 ; 

val f1 = fn : 'a * 'b * int -> bool 

comment je change cette val a’ * a’ * int -> bool ??

+2

Est-ce que vous publiez toutes vos questions sur StackOverflow? –

Répondre

1

Le type:

a’ * a’ * int -> bool 

signifie que la fonction prend trois arguments, la première est de « type, le deuxième aussi de » type et la troisième de type int.

Votre définition:

fun f1 (x,y,z) = z<5 ; 

est dans le droit chemin, car il faut un tuple, maintenant afin de limiter le type de x, y pour être égal vous pouvez écrire:

fun f1 (x :'a ,y :'a ,z) = z<5 ; 
1

Si vous souhaitez éviter les annotations de type explicite, le moyen le plus simple de rendre x et y le même type est de les renvoyer tous deux de la fonction mais dans des circonstances différentes.
exemple réel:

- fun f (x,y,z) = if z < 0 then x else y; 
val f = fn : 'a * 'a * int -> 'a 

(Étant donné que le type de résultat bool ne figure pas dans la description du problème, je suppose qu'il est juste une conséquence de votre retour z < 5 et ne fait pas partie du problème initial.)