File: 104_functorlink.sml

package info (click to toggle)
smlsharp 4.1.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 123,724 kB
  • sloc: ansic: 16,725; sh: 4,347; makefile: 2,191; java: 742; haskell: 493; ruby: 305; cpp: 284; pascal: 256; ml: 255; lisp: 141; asm: 97; sql: 74
file content (40 lines) | stat: -rw-r--r-- 837 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
_interface "104_functorlink.smi"
val _ = (_import "puts" : string -> int) "1"
structure T = F()

(*
2011-09-02 katsu

This causes bus error at runtime due to external name conflict.
"val F : unit" in 104_functorlink2.smi and "functor F" in
104_functorlink3.smi have same external path ["F"].
Since global variables are allocated in the common section,
linker does not complain about symbol conflict.

$ smlsharp -c 104_functorlink.sml
$ smlsharp -c 104_functorlink2.sml
$ smlsharp -c 104_functorlink3.sml
$ smlsharp 104_functorlink.smi
$ ./a.out
2
3
1
Bus Error

*)


(*
2011-09-02 ohori

Fixed.

This occurs because the name space for functors and that of variables
are merged into one in name evaluation.

A tentative solution is to prefix a functor name with some special 
symbol ("_.") to genreate the variable representation.

*)