File: 157_polyValBind.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 (32 lines) | stat: -rw-r--r-- 853 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
infixr ::
val empty = nil
fun get (foo::x) = (foo, x);
val (_, x) = get empty

(*
2011-11-28 ohori

This causes BUG at RecordCompilation.

TAG(FREEBTV(38))
[BUG] generateInstance
    raised at: ../recordcompilation/main/RecordCompilation.sml:309.26-309.56
   handled at: ../toplevel2/main/Top.sml:836.37
                main/SimpleMain.sml:368.53
*)

(*
2011-11-28 ohori

This is cased by the bug-fix of 141_provide.sml, where we enlarge the set of
non-expansive terms to contain 
  #l non-expansive-term
which are indeed non-expansive.

This chage exibits a hidden bug in decompose, which introduces 
compiler-generated local value bindings. The old decompose
does not increment the lambda depth for the expression inside of 
the newly introduced local value binding.
Due to this, free type variables appearing in an outer context 
get generalized.
*)