Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001952OCamlOCaml generalpublic2003-12-01 15:232013-08-30 23:12
Reporteradministrator 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
StatusresolvedResolutionsuspended 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0001952: référence et polymorphisme
DescriptionFull_Name: Julien Signoles
Version: 3.06 et 3.07
OS: linux
Submission from: newwww.lri.fr (129.175.15.10)


Bonjour,

Le programme ci-dessous ne type pas alors qu'il devrait...

=====
let x = ref 0
let y = ref true

let f a = x := a
let g a = y := a

(* version "typage explicite + let" : ok *)
let h1 : ('a -> unit) -> 'a -> unit = fun f x -> f x;;
h1 f 0;;
h1 g true;;

let _ =
  (* version "typage implicite + let_in" : ok *)
  let h1 f x = f x in
  h1 f 0;
  h1 g true;
  (* version "typage explicite + let_in" : KO *)
  let h2 : ('a -> unit) -> 'a -> unit = fun f x -> f x in
  h2 f 0;
  h2 g (* <-- erreur de typage *) true
=====

Julien Signoles

TagsNo tags attached.
Attached Files

- Relationships
related to 0006150resolvedgarrigue Wrong error: "The type constructor X.t would escape its scope" 

-  Notes
(0000192)
administrator (administrator)
2004-05-28 05:01

> Le programme ci-dessous ne type pas alors qu'il devrait...
>
> =====
> let x = ref 0
> let y = ref true
>
> let f a = x := a
> let g a = y := a
>
> let _ =
> (* version "typage explicite + let_in" : KO *)
> let h2 : ('a -> unit) -> 'a -> unit = fun f x -> f x in
> h2 f 0;
> h2 g (* <-- erreur de typage *) true

Ce n'est pas a proprement parler un bug, puisque c'est le comportement prevu du
compilateur (mais je ne suis pas sur qu'il soit clairement documente').
Toutes les variables de types apparaissant dans des annotations sont
considerees
comme liees au niveau le plus exterieur. Elles ne peuvent donc etre rendues
polymorphes que pour les definitions a` toplevel.
Il est parfois question de changer cette semantique... je reclasse donc ca en
feature-wish.

Jacques Garrigue
(0000193)
administrator (administrator)
2004-05-28 05:01

Question de liaison des variables dans les contraintes de types ? -DD
Oui, mais ce n'est pas un bug -JG
(0010277)
doligez (administrator)
2013-08-30 23:12

This particular example is resolved by explicit polymorphism, which was introduced in the meantime. Change the type annotation to:
  h2 : 'a . ('a -> unit) -> 'a -> unit
and the program typechecks.

I don't know whether we are still considering a change in the binding rule for type annotations.

- Issue History
Date Modified Username Field Change
2005-11-18 10:13 administrator New Issue
2013-08-30 23:11 doligez Relationship added related to 0006150
2013-08-30 23:12 doligez Note Added: 0010277
2013-08-30 23:12 doligez Status acknowledged => resolved
2013-08-30 23:12 doligez Resolution open => suspended
2013-08-30 23:12 doligez Description Updated View Revisions


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker