Mantis Bug Tracker

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0005072OCamlOCaml typingpublic2010-06-14 17:562012-06-01 09:15
Reporterletouzey 
Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
StatusacknowledgedResolutionopen 
PlatformOSOS Version
Product Version 
Target VersionFixed in Version 
Summary0005072: Absolute name for built-in types such as int, bool, ... ?
DescriptionHi

As said in the documentation of the core library:
[
 The following built-in types and predefined exceptions are always defined in
 the compilation environment, but are not part of any module. As a consequence,
 they can only be referred by their short names
]

Well, there are rare situations where it would be handy to have
absolute names for int, bool, char, etc, but indeed Pervasives.int isn't
working. Truly, any user can create its own long name for int thanks to
something like

module MyPervasives = struct
 type int' = int
 type int = int'
end

But it would be nice to have something like that by default.

(By the way, as illustrated above, it's really painful to have only
 a type declaration syntax which is recursive, even for type abbreviation).

Maybe this disambiguation need is really specific to my own parish, which is
ocaml code generation from a system where users may have their own naming
conventions and expect nonetheless the obtained code to interact nicely with
ocaml's stdlib. But placing int and others inside Pervasives would probably
also allow to have nicer error message when a beginnner redefines int by
mistake: "foo has type int but is expected to have type Pervasives.int"
is nicer than the same message without Pervasives ...

Best regards,

Pierre Letouzey
TagsNo tags attached.
Attached Files

- Relationships

-  Notes
(0005566)
garrigue (manager)
2010-06-18 03:12

This is a actually a problem for the ocaml compiler developers too...

The reason these types are not in Pervarsives is that they are used internally by the compiler, and they need to be defined before reading Pervasives.
An alternative solution would be to put them in another module, named Builtin for instance, but then we still have the risk of somebody defining a module with the same name.

If somebody has a good solution for this problem, I am interested.
(0005958)
doligez (administrator)
2011-06-01 23:18

In answer to Jacques: we could just forbid the definition of a module called Builtin.

- Issue History
Date Modified Username Field Change
2010-06-14 17:56 letouzey New Issue
2010-06-18 03:12 garrigue Note Added: 0005566
2011-06-01 23:18 doligez Note Added: 0005958
2011-06-01 23:18 doligez Status new => acknowledged
2011-06-02 12:46 ygrek Note Added: 0005962
2011-06-02 12:46 ygrek Note Deleted: 0005962
2012-06-01 09:15 garrigue Category OCaml general => OCaml typing


Copyright © 2000 - 2011 MantisBT Group
Powered by Mantis Bugtracker