Qu'est-ce que cela signifie, et aussi ce qui est la cardinalité des prochains types, par exemple:cardinalité du type
unit->int
bool->(int->bool)
Qu'est-ce que cela signifie, et aussi ce qui est la cardinalité des prochains types, par exemple:cardinalité du type
unit->int
bool->(int->bool)
La cardinalité d'un type est le nombre de valeurs juridiques possibles qui peuvent être de ce type . Avec les types de fonctions, nous voulons généralement considérer deux fonctions qui retournent la même valeur pour que chaque entrée soit «la même fonction», à des fins de cardinalité au moins (c'est ce que l'on appelle «l'égalité extensionnelle»). Je suppose qu'il s'agit d'un problème de devoirs, et je suppose en outre que les fonctions qui ne se terminent pas ou qui produisent des valeurs indéfinies ne doivent pas être incluses (car, en fait, elles ne seraient pas incluses dans un traitement mathématique typique).
L'expression de la cardinalité de types pouvant avoir un nombre fini de valeurs possibles est assez facile en principe, car vous pouvez simplement donner un nombre comme cardinalité. Cependant, avec des cardinalités infinies, techniquement, il existe une distinction entre différents types d'infinis. Par exemple, un infini non dénombrable est "plus grand que" un infini dénombrable. (Pour être honnête, je ne suis pas sûr si vous êtes censé savoir cela, ou si vous êtes juste censé donner une réponse "infinie" - vérifiez vos notes de cours.) Pour cette raison, c'est une bonne idée de spécifier quelle infinité vous parlez, par exemple en se référant à la cardinalité d'un type "plus simple".
Ainsi, la cardinalité de unit->int
est le même que la cardinalité de int
(et va de même pour tout autre type de destination que vous pouvez choisir au lieu de int
), car une valeur de type unit->X
doit nécessairement être une fonction constante " ignore son entrée "et renvoie une valeur constante de type X
.
J'espère que cette réponse incomplète est suffisante pour vous aider à démarrer.
@Robin Green: merci beaucoup, mais qu'en est-il de la seconde, puis-je suggérer que c'est 2 * 2 * # (int)? – rookie
@Robin Green: c'est le problème, que dans mes notes je n'ai pas d'explications sur l'infini, en net je ne trouve pas d'infos correctes, je sais aussi int a 32 bits, donc il peut obtenir des valeurs allant jusqu'à 2^32 ? alors qu'en est-il de la seconde? Avais-je raison? – rookie
@rookie: Non, ce n'est pas la bonne réponse. Considérons 'int-> bool', et prétendons qu'il n'y a que 10 entiers (haha). Le nombre de fonctions de int à bool serait certainement supérieur à 20: en fait, ce serait 1024. Il ne s'agit donc pas simplement de multiplier deux cardinalités, lorsque vous avez un type de fonction. –