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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
infixr ::
structure Fifo :> sig
type 'a queue
val empty : 'a queue
val get : 'a queue -> 'a * 'a queue
end =
struct
type 'a queue = 'a list * 'a list
val empty = (nil, nil)
fun get (a::x,y) = (a, (x, y))
end
val q = Fifo.empty : int Fifo.queue
val (_,newQueue) = Fifo.get q
(*
2011-11-28 katsu
This causes BUG at StaticAnalysis.
Unification fails (3)
int(t0[]) queue(t30[[opaque(rv1,['a. 'a list(t15[]) * 'a list(t15[])])]])
{1: int(t0[]) list(t15[]), 2: int(t0[]) list(t15[])}^{U}
TLSELECT: unification fail
tlexp
#1
_indexof(1,
int(t0[])
* int(t0[])
queue(t30[[opaque(rv1,['a. 'a list(t15[]) * 'a list(t15[])])]]))
$T_b(10)
recordExp
$T_b(10)
indexExp
_indexof(1,
int(t0[])
* int(t0[])
queue(t30[[opaque(rv1,['a. 'a list(t15[]) * 'a list(t15[])])]]))
recordTy
int(t0[])
* int(t0[]) queue(t30[[opaque(rv1,['a. 'a list(t15[]) * 'a list(t15[])])]])
newRecordTy
{1: int(t0[]), 2: {1: int(t0[]) list(t15[]), 2: int(t0[]) list(t15[])}^{U}}^{U}
indexTy
index(1,
{
1: int(t0[]),
2: {1: int(t0[]) list(t15[]), 2: int(t0[]) list(t15[])}^{U}
}
^{U})
newIndexTy
index(1,
{
1: int(t0[]),
2: int(t0[]) queue(t30[[opaque(rv1,['a. 'a list(t15[]) * 'a list(t15[])])]])
}
^{U})
[BUG] StaticAnalysis:TLSELECT: unification fail
raised at: ../staticanalysis/main/StaticAnalysis.sml:290.29-290.61
handled at: ../toplevel2/main/Top.sml:836.37
main/SimpleMain.sml:368.53
*)
|