New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feature wish #3278
Comments
Comment author: administrator
Le trait dont j'ai toujours rêvé dans le domaine des types abstraits Cordialement, Pierre Weis INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/ |
Comment author: administrator From: lvibert@irisa.fr
C'est un souhait qui apparait regulierement, mais pour lequel il n'y a
Le probleme est que pour pouvoir filtrer, on a besoin de connaitre la Sur le polymorphisme, il pourrait y a avoir quelque chose a let cons x = Cons x Comme l'information peut ne pas etre dans le type lui-meme, mais dans Cordialement,
|
Comment author: administrator On Thu, 28 Mar 2002, Jacques Garrigue wrote:
pour la completude du filtrage, on peut déjà filtrer un type abstrait,
Ne peut on pas utiliser les variants polymorphes justement pour contourner type ('a,'b) blop = [ où le "_" ne représente pas une variable de rangée, mais d'autres ie on ne peux pas faire (`C : ('a,'b) blop) ça ne correspond pas complètement à mon souhait initial, mais c'est déjà Avec tous mes remerciements pour le langage Caml, et l'attention que vous Laurent |
Comment author: administrator This suggestion brings us quite far -- into the problem of concrete views on |
Original bug ID: 1031
Reporter: administrator
Status: closed
Resolution: won't fix
Priority: normal
Severity: feature
Category: ~DO NOT USE (was: OCaml general)
Bug description
Bonjour,
quand on abstrait un type, on n'a plus accès aux constructeurs... normal.
Mais on aimerait pourtant parfois en garder certains, tandis que d'autres
restent cachés. Les abstraire par une fonction pour les rendre public
n'est pas toujours efficace : on perd alors la construction de valeurs
polymorphes, et toute possibilité de pattern matching. Est-il possible
d'avoir une construction équivalente à val dans les modules, mais pour des
constructeurs ? (les variants polymorphes n'aident pas ici, on voudrait
que le type reste abstrait)
par exemple, dans le .ml :
type ('a,'b) bar = Cons of 'a | Blop of 'a * 'b
dans le .mli :
type ('a,'b) bar (* abstrait *)
val Cons : 'a -> ('a,'b) bar
(* tel que (Cons x) soit polymorphe, et même puisse être filtrer. *)
The text was updated successfully, but these errors were encountered: