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
|
structure ValRecDecl =
struct
open SMLUnit.Test SMLUnit.Assert
fun testValRecDecl () =
let
val rec v1 = fn x => x
val _ = assertEqualInt 1 (v1 1)
val _ = assertEqualString "A" (v1 "A")
in
()
end
fun testValRecDeclRec () =
let
val rec v1 = fn x => if x < 3 then x + v1 (x + 1) else x
val _ = assertEqualInt 6 (v1 1)
in
()
end
fun testValRecDeclTyvar () =
let
val rec 'a v1 = fn x:'a => x
val _ = assertEqualInt 1 (v1 1)
val _ = assertEqualString "A" (v1 "A")
in
()
end
fun testValRecDeclTyvarSeq () =
let
val rec ('a, 'b) v1 = fn x:'a => (fn y:'b => x)
val _ = assertEqualInt 1 (v1 1 "A")
val _ = assertEqualString "A" (v1 "A" 1)
in
()
end
val tests = TestList [
Test ("testValRecDecl", testValRecDecl),
Test ("testValRecDeclRec", testValRecDeclRec),
Test ("testValRecDeclTyvar", testValRecDeclTyvar),
Test ("testValRecDeclTyvarSeq", testValRecDeclTyvarSeq)
]
end
|