Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000248OCamlOCaml generalpublic2000-12-14 20:582013-08-30 22:29
Reporteradministrator 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
StatusacknowledgedResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0000248: Re variables de type faibles
DescriptionFull_Name: Sylvain Boulme
Version: 3.00
OS: RedHat 6.2
Submission from: cerdon.lip6.fr (132.227.83.56)


Ayant compris ma méprise dans mon message précédent (n 246) (les
variables de type faibles étant anonymes, l'utilisateur ne peut pas en
écrire !), voilà une demande de features.

1. Serait-il possible d'interdire le symbole "_" dans les
identificateurs de types tapés par l'utilisateur (comme cela si
l'utilisateur tape "'_a" dans une expression de type, il n'a pas
l'impression d'écrire une variable de type faible alors qu'il écrit en
fait une variable "normale". (Au mieux mettre un "warning"...)

2. Je trouve pertubant que ocaml donne le même nom à des variables de
type faibles différentes (de façon interne).

      let f y = fun x -> x
      let blah = f 0
      let splash () = blah (failwith "coucou")
      let blurp = f 0

donne (d'après le toplevel) de signature :

    val f : 'a -> 'b -> 'b
    val blah : '_a -> '_a
    val splash : unit -> '_a
    val blurp : '_a -> '_a
 
Mais en réalité le "'_a" de "splash" est le même que "blah", mais pas
le même que "blurp".

Exemple: après un "blah 1;;"
on a :
  blah: int -> int
  splash: unit -> int
  blurp: '_a -> '_a

Cordialement,

Sylvain.

TagsNo tags attached.
Attached Files

- Relationships
related to 0001613acknowledged printing non-generalized type variables 

-  Notes
(0000104)
administrator (administrator)
2000-12-15 10:02

> Full_Name: Sylvain Boulme
> Version: 3.00
> OS: RedHat 6.2
> Submission from: cerdon.lip6.fr (132.227.83.56)
>
>
> Ayant compris ma méprise dans mon message précédent (n 246) (les
> variables de type faibles étant anonymes, l'utilisateur ne peut pas en
> écrire !), voilà une demande de features.
>
> 1. Serait-il possible d'interdire le symbole "_" dans les
> identificateurs de types tapés par l'utilisateur (comme cela si
> l'utilisateur tape "'_a" dans une expression de type, il n'a pas
> l'impression d'écrire une variable de type faible alors qu'il écrit en
> fait une variable "normale". (Au mieux mettre un "warning"...)

Ca parait raisonnable. Seul petit probleme, si on fait ca au niveau du
parseur, on perd une propriete' interessante qui est valide actuellement:
      tout type imprime' par le typeur est lisible par le parseur

Elle m'est personnellement assez chere, entre autres pour ocamlbrowser.

Une autre solution serait de declencher l'erreur au niveau du typeur,
ce qui est plus logique, et ne met pas en cause le parseur.
(Pour l'utilisateur normal ces deux solutions sont equivalentes.)

> 2. Je trouve pertubant que ocaml donne le même nom à des variables de
> type faibles différentes (de façon interne).
>
> let f y = fun x -> x
> let blah = f 0
> let splash () = blah (failwith "coucou")
> let blurp = f 0
>
> donne (d'après le toplevel) de signature :
>
> val f : 'a -> 'b -> 'b
> val blah : '_a -> '_a
> val splash : unit -> '_a
> val blurp : '_a -> '_a
>
> Mais en réalité le "'_a" de "splash" est le même que "blah", mais pas
> le même que "blurp".

Ca c'est un peu plus complique'.
A` l'heure actuelle, les noms de variables repartent a` ['a] lors de
l'impression de chaque expression. Changer ce comportement obligerait
a` donner des noms assez longs a` ces variables. Par exemple en
utilisant le compteur de types:
     val f : 'a -> 'b -> 'b
     val blah : '_10235 -> '_10235
     val splash : unit -> '_a
     val blurp : '_12326 -> '_12326

Cordialement,

Jacques Garrigue

(0006566)
doligez (administrator)
2011-12-30 16:50

As of december 2011, point 1 is done, and we still don't know how to do point 2.

- Issue History
Date Modified Username Field Change
2005-11-18 10:13 administrator New Issue
2011-12-30 16:50 doligez Note Added: 0006566
2013-08-30 22:29 doligez Relationship added related to 0001613


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker