File: 210_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 (27 lines) | stat: -rw-r--r-- 761 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
signature SType = sig type dt end
structure PType = struct type t = real end
functor FTypeOpaq(type t) :> SType = struct datatype dt = D of t end;
structure TTypeOpaq = FTypeOpaq(PType);

(*
2012-7-13 hikaru

This causes a BUG at structure made from functor.
[BUG] EvalITy: free tvar:'t 
*)

(*
2012-7-19 ohori
Fixed by 4316:de46c532c718.
The bug is roughly as follows.
The opaque signature generates a new data type definition
  TFUN_DTY that contain the original tfun in the 
  dtyKind as OPAQUE{tfun=tfun, revealKey=...}.
But setLiftedTy does not trace the dtyKind and thefore 
the liftedTys in tfun is incorrect.

This is solved by making a depenndency link from the new tfun to
the original tfun. The SCC computation in liftedTys then works properly.

*)