File: 121_functor.sml

package info (click to toggle)
smlsharp 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 123,732 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 (39 lines) | stat: -rw-r--r-- 705 bytes parent folder | download | duplicates (2)
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
_interface "121_functor.smi"
(* 121_functor2.smi
  structure S =
    struct
     val f : int -> int
   end
*)
functor F () =
struct
  structure T = S
end
structure A = F()
val x = A.T.f

(*
2011-09-06 katsu

EXTERNVAR and EXVAR are mismatched.

extern var S.f : int(t0[]) -> int(t0[])
val _.F(1) : unit(t7[]) -> {1: int(t0[]) -> int(t0[])} =
 (fn unitVar(0) : unit(t7[]) =>
  let
   
  in
   (T.f)   (****** <=== this should be S.f *******)
    :{1: int(t0[]) -> int(t0[])} : {{1: int(t0[]) -> int(t0[])}}
  end
  :{1: int(t0[]) -> int(t0[])})
*)

(*
2011-09-06 ohori

This is due to the difference between the path to be bound in the envivonment
and the external name path. 

Some cheking code added.
*)