From eaa183b7dfc841df75d42ace7a90ada1e40ff282 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Tue, 4 Nov 2025 18:58:28 -0800 Subject: Add lists --- tests/01-simple.sml | 10 ---------- tests/010-simple.sml | 10 ++++++++++ tests/02-lambda.sml | 1 - tests/020-lambda.sml | 1 + tests/03-arg.sml | 1 - tests/030-arg.sml | 1 + tests/04-val.sml | 2 -- tests/040-val.sml | 2 ++ tests/05-let.sml | 4 ---- tests/050-let.sml | 4 ++++ tests/06-let-multiple.sml | 6 ------ tests/060-let-multiple.sml | 6 ++++++ tests/07-add.sml | 1 - tests/070-add.sml | 1 + tests/08-multiply.sml | 1 - tests/080-multiply.sml | 1 + tests/09-subtract.sml | 1 - tests/090-subtract.sml | 1 + tests/10-divide.sml | 1 - tests/100-divide.sml | 1 + tests/11-case.sml | 1 - tests/110-case.sml | 1 + tests/12-case-int.sml | 5 ----- tests/120-case-int.sml | 5 +++++ tests/13-fibonacci.sml | 7 ------- tests/130-fibonacci.sml | 7 +++++++ tests/14-fun.sml | 3 --- tests/140-fun.sml | 3 +++ tests/15-tuple.sml | 3 --- tests/150-tuple.sml | 3 +++ tests/155-case-tuple.sml | 4 ++++ tests/16-datatype.sml | 5 ----- tests/160-datatype.sml | 5 +++++ tests/17-case-datatype.sml | 6 ------ tests/170-case-datatype.sml | 6 ++++++ tests/175-case-datatype-default.sml | 6 ++++++ tests/18-fun-case.sml | 5 ----- tests/180-fun-case.sml | 5 +++++ tests/19-list.sml | 11 ----------- tests/190-list.sml | 10 ++++++++++ tests/20-structure.sml | 5 ----- tests/200-structure.sml | 5 +++++ tests/21-struct-datatype.sml | 6 ------ tests/210-struct-datatype.sml | 6 ++++++ tests/22-nested-struct.sml | 9 --------- tests/220-nested-struct.sml | 9 +++++++++ tests/225-two-structs.sml | 9 +++++++++ tests/23-signature.sml | 10 ---------- tests/230-signature.sml | 10 ++++++++++ tests/24-functor.sml | 17 ----------------- tests/240-functor.sml | 17 +++++++++++++++++ tests/250-list.sml | 6 ++++++ tests/260-cons.sml | 4 ++++ 53 files changed, 149 insertions(+), 121 deletions(-) delete mode 100644 tests/01-simple.sml create mode 100644 tests/010-simple.sml delete mode 100644 tests/02-lambda.sml create mode 100644 tests/020-lambda.sml delete mode 100644 tests/03-arg.sml create mode 100644 tests/030-arg.sml delete mode 100644 tests/04-val.sml create mode 100644 tests/040-val.sml delete mode 100644 tests/05-let.sml create mode 100644 tests/050-let.sml delete mode 100644 tests/06-let-multiple.sml create mode 100644 tests/060-let-multiple.sml delete mode 100644 tests/07-add.sml create mode 100644 tests/070-add.sml delete mode 100644 tests/08-multiply.sml create mode 100644 tests/080-multiply.sml delete mode 100644 tests/09-subtract.sml create mode 100644 tests/090-subtract.sml delete mode 100644 tests/10-divide.sml create mode 100644 tests/100-divide.sml delete mode 100644 tests/11-case.sml create mode 100644 tests/110-case.sml delete mode 100644 tests/12-case-int.sml create mode 100644 tests/120-case-int.sml delete mode 100644 tests/13-fibonacci.sml create mode 100644 tests/130-fibonacci.sml delete mode 100644 tests/14-fun.sml create mode 100644 tests/140-fun.sml delete mode 100644 tests/15-tuple.sml create mode 100644 tests/150-tuple.sml create mode 100644 tests/155-case-tuple.sml delete mode 100644 tests/16-datatype.sml create mode 100644 tests/160-datatype.sml delete mode 100644 tests/17-case-datatype.sml create mode 100644 tests/170-case-datatype.sml create mode 100644 tests/175-case-datatype-default.sml delete mode 100644 tests/18-fun-case.sml create mode 100644 tests/180-fun-case.sml delete mode 100644 tests/19-list.sml create mode 100644 tests/190-list.sml delete mode 100644 tests/20-structure.sml create mode 100644 tests/200-structure.sml delete mode 100644 tests/21-struct-datatype.sml create mode 100644 tests/210-struct-datatype.sml delete mode 100644 tests/22-nested-struct.sml create mode 100644 tests/220-nested-struct.sml create mode 100644 tests/225-two-structs.sml delete mode 100644 tests/23-signature.sml create mode 100644 tests/230-signature.sml delete mode 100644 tests/24-functor.sml create mode 100644 tests/240-functor.sml create mode 100644 tests/250-list.sml create mode 100644 tests/260-cons.sml (limited to 'tests') diff --git a/tests/01-simple.sml b/tests/01-simple.sml deleted file mode 100644 index e41f9b4..0000000 --- a/tests/01-simple.sml +++ /dev/null @@ -1,10 +0,0 @@ -(* - This file is part of Foobar. - - Foobar is free software: you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation, either version 3 of the License, or (at your option) any - later version. -*) - -val _ = __builtin "exit" 42 diff --git a/tests/010-simple.sml b/tests/010-simple.sml new file mode 100644 index 0000000..e41f9b4 --- /dev/null +++ b/tests/010-simple.sml @@ -0,0 +1,10 @@ +(* + This file is part of Foobar. + + Foobar is free software: you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation, either version 3 of the License, or (at your option) any + later version. +*) + +val _ = __builtin "exit" 42 diff --git a/tests/02-lambda.sml b/tests/02-lambda.sml deleted file mode 100644 index 41470a2..0000000 --- a/tests/02-lambda.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = (fn _ => __builtin "exit" 42) () diff --git a/tests/020-lambda.sml b/tests/020-lambda.sml new file mode 100644 index 0000000..41470a2 --- /dev/null +++ b/tests/020-lambda.sml @@ -0,0 +1 @@ +val _ = (fn _ => __builtin "exit" 42) () diff --git a/tests/03-arg.sml b/tests/03-arg.sml deleted file mode 100644 index 8d10139..0000000 --- a/tests/03-arg.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = (fn x => __builtin "exit" x) 42 diff --git a/tests/030-arg.sml b/tests/030-arg.sml new file mode 100644 index 0000000..8d10139 --- /dev/null +++ b/tests/030-arg.sml @@ -0,0 +1 @@ +val _ = (fn x => __builtin "exit" x) 42 diff --git a/tests/04-val.sml b/tests/04-val.sml deleted file mode 100644 index 20d07b4..0000000 --- a/tests/04-val.sml +++ /dev/null @@ -1,2 +0,0 @@ -val x = 42 -val _ = __builtin "exit" x diff --git a/tests/040-val.sml b/tests/040-val.sml new file mode 100644 index 0000000..20d07b4 --- /dev/null +++ b/tests/040-val.sml @@ -0,0 +1,2 @@ +val x = 42 +val _ = __builtin "exit" x diff --git a/tests/05-let.sml b/tests/05-let.sml deleted file mode 100644 index d1c27f5..0000000 --- a/tests/05-let.sml +++ /dev/null @@ -1,4 +0,0 @@ -val _ = - let val x = 42 in - __builtin "exit" x - end diff --git a/tests/050-let.sml b/tests/050-let.sml new file mode 100644 index 0000000..d1c27f5 --- /dev/null +++ b/tests/050-let.sml @@ -0,0 +1,4 @@ +val _ = + let val x = 42 in + __builtin "exit" x + end diff --git a/tests/06-let-multiple.sml b/tests/06-let-multiple.sml deleted file mode 100644 index 47441ac..0000000 --- a/tests/06-let-multiple.sml +++ /dev/null @@ -1,6 +0,0 @@ -val _ = - let - val x = 42 - val y = x - in __builtin "exit" y - end diff --git a/tests/060-let-multiple.sml b/tests/060-let-multiple.sml new file mode 100644 index 0000000..47441ac --- /dev/null +++ b/tests/060-let-multiple.sml @@ -0,0 +1,6 @@ +val _ = + let + val x = 42 + val y = x + in __builtin "exit" y + end diff --git a/tests/07-add.sml b/tests/07-add.sml deleted file mode 100644 index 9892b23..0000000 --- a/tests/07-add.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = __builtin "exit" (__builtin "add" (40, 2)) diff --git a/tests/070-add.sml b/tests/070-add.sml new file mode 100644 index 0000000..9892b23 --- /dev/null +++ b/tests/070-add.sml @@ -0,0 +1 @@ +val _ = __builtin "exit" (__builtin "add" (40, 2)) diff --git a/tests/08-multiply.sml b/tests/08-multiply.sml deleted file mode 100644 index d75c316..0000000 --- a/tests/08-multiply.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = __builtin "exit" (__builtin "mul" (6, 7)) diff --git a/tests/080-multiply.sml b/tests/080-multiply.sml new file mode 100644 index 0000000..d75c316 --- /dev/null +++ b/tests/080-multiply.sml @@ -0,0 +1 @@ +val _ = __builtin "exit" (__builtin "mul" (6, 7)) diff --git a/tests/09-subtract.sml b/tests/09-subtract.sml deleted file mode 100644 index 2374816..0000000 --- a/tests/09-subtract.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = __builtin "exit" (__builtin "sub" (84, 42)) diff --git a/tests/090-subtract.sml b/tests/090-subtract.sml new file mode 100644 index 0000000..2374816 --- /dev/null +++ b/tests/090-subtract.sml @@ -0,0 +1 @@ +val _ = __builtin "exit" (__builtin "sub" (84, 42)) diff --git a/tests/10-divide.sml b/tests/10-divide.sml deleted file mode 100644 index a701180..0000000 --- a/tests/10-divide.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = __builtin "exit" (__builtin "div" (84, 2)) diff --git a/tests/100-divide.sml b/tests/100-divide.sml new file mode 100644 index 0000000..a701180 --- /dev/null +++ b/tests/100-divide.sml @@ -0,0 +1 @@ +val _ = __builtin "exit" (__builtin "div" (84, 2)) diff --git a/tests/11-case.sml b/tests/11-case.sml deleted file mode 100644 index 297ae5b..0000000 --- a/tests/11-case.sml +++ /dev/null @@ -1 +0,0 @@ -val _ = case 42 of x => __builtin "exit" x diff --git a/tests/110-case.sml b/tests/110-case.sml new file mode 100644 index 0000000..297ae5b --- /dev/null +++ b/tests/110-case.sml @@ -0,0 +1 @@ +val _ = case 42 of x => __builtin "exit" x diff --git a/tests/12-case-int.sml b/tests/12-case-int.sml deleted file mode 100644 index 98967e4..0000000 --- a/tests/12-case-int.sml +++ /dev/null @@ -1,5 +0,0 @@ -val _ = - case 18 of - 17 => __builtin "exit" 41 - | 18 => __builtin "exit" 42 - | _ => __builtin "exit" 43 diff --git a/tests/120-case-int.sml b/tests/120-case-int.sml new file mode 100644 index 0000000..98967e4 --- /dev/null +++ b/tests/120-case-int.sml @@ -0,0 +1,5 @@ +val _ = + case 18 of + 17 => __builtin "exit" 41 + | 18 => __builtin "exit" 42 + | _ => __builtin "exit" 43 diff --git a/tests/13-fibonacci.sml b/tests/13-fibonacci.sml deleted file mode 100644 index ec89f70..0000000 --- a/tests/13-fibonacci.sml +++ /dev/null @@ -1,7 +0,0 @@ -val rec fib = fn n => - case n of - 0 => 0 - | 1 => 1 - | _ => __builtin "add" (fib (__builtin "sub" (n, 1)), fib (__builtin "sub" (n, 2))) - -val _ = __builtin "exit" (__builtin "add" (fib 9, 8)) diff --git a/tests/130-fibonacci.sml b/tests/130-fibonacci.sml new file mode 100644 index 0000000..ec89f70 --- /dev/null +++ b/tests/130-fibonacci.sml @@ -0,0 +1,7 @@ +val rec fib = fn n => + case n of + 0 => 0 + | 1 => 1 + | _ => __builtin "add" (fib (__builtin "sub" (n, 1)), fib (__builtin "sub" (n, 2))) + +val _ = __builtin "exit" (__builtin "add" (fib 9, 8)) diff --git a/tests/14-fun.sml b/tests/14-fun.sml deleted file mode 100644 index 210b30d..0000000 --- a/tests/14-fun.sml +++ /dev/null @@ -1,3 +0,0 @@ -fun f x y = __builtin "exit" (__builtin "sub" (x, y)) - -val _ = f 60 18 diff --git a/tests/140-fun.sml b/tests/140-fun.sml new file mode 100644 index 0000000..210b30d --- /dev/null +++ b/tests/140-fun.sml @@ -0,0 +1,3 @@ +fun f x y = __builtin "exit" (__builtin "sub" (x, y)) + +val _ = f 60 18 diff --git a/tests/15-tuple.sml b/tests/15-tuple.sml deleted file mode 100644 index 114fd25..0000000 --- a/tests/15-tuple.sml +++ /dev/null @@ -1,3 +0,0 @@ -fun f (x, y) = __builtin "exit" (__builtin "add" (x, y)) - -val _ = f (40, 2) diff --git a/tests/150-tuple.sml b/tests/150-tuple.sml new file mode 100644 index 0000000..114fd25 --- /dev/null +++ b/tests/150-tuple.sml @@ -0,0 +1,3 @@ +fun f (x, y) = __builtin "exit" (__builtin "add" (x, y)) + +val _ = f (40, 2) diff --git a/tests/155-case-tuple.sml b/tests/155-case-tuple.sml new file mode 100644 index 0000000..774fb34 --- /dev/null +++ b/tests/155-case-tuple.sml @@ -0,0 +1,4 @@ +val _ = __builtin "exit" + (case (1, 2, 42) of + (_, 2, x) => x + | _ => 13) diff --git a/tests/16-datatype.sml b/tests/16-datatype.sml deleted file mode 100644 index 7514606..0000000 --- a/tests/16-datatype.sml +++ /dev/null @@ -1,5 +0,0 @@ -datatype D = D of int - -fun f (D x) = __builtin "exit" x - -val _ = f (D 42) diff --git a/tests/160-datatype.sml b/tests/160-datatype.sml new file mode 100644 index 0000000..7514606 --- /dev/null +++ b/tests/160-datatype.sml @@ -0,0 +1,5 @@ +datatype D = D of int + +fun f (D x) = __builtin "exit" x + +val _ = f (D 42) diff --git a/tests/17-case-datatype.sml b/tests/17-case-datatype.sml deleted file mode 100644 index 974f263..0000000 --- a/tests/17-case-datatype.sml +++ /dev/null @@ -1,6 +0,0 @@ -datatype D = A | B - -val _ = - case B of - A => __builtin "exit" 0 - | B => __builtin "exit" 42 diff --git a/tests/170-case-datatype.sml b/tests/170-case-datatype.sml new file mode 100644 index 0000000..974f263 --- /dev/null +++ b/tests/170-case-datatype.sml @@ -0,0 +1,6 @@ +datatype D = A | B + +val _ = + case B of + A => __builtin "exit" 0 + | B => __builtin "exit" 42 diff --git a/tests/175-case-datatype-default.sml b/tests/175-case-datatype-default.sml new file mode 100644 index 0000000..221bc13 --- /dev/null +++ b/tests/175-case-datatype-default.sml @@ -0,0 +1,6 @@ +datatype D = A of int * int | B + +val _ = __builtin "exit" + (case A (42, 13) of + A (x, 13) => x + | _ => 10) diff --git a/tests/18-fun-case.sml b/tests/18-fun-case.sml deleted file mode 100644 index d64b7d7..0000000 --- a/tests/18-fun-case.sml +++ /dev/null @@ -1,5 +0,0 @@ -fun fib 1 = 1 - | fib 2 = 2 - | fib n = __builtin "add" (fib (__builtin "sub" (n, 1)), fib (__builtin "sub" (n, 2))) - -val _ = __builtin "exit" (__builtin "add" (fib 8, 8)) diff --git a/tests/180-fun-case.sml b/tests/180-fun-case.sml new file mode 100644 index 0000000..d64b7d7 --- /dev/null +++ b/tests/180-fun-case.sml @@ -0,0 +1,5 @@ +fun fib 1 = 1 + | fib 2 = 2 + | fib n = __builtin "add" (fib (__builtin "sub" (n, 1)), fib (__builtin "sub" (n, 2))) + +val _ = __builtin "exit" (__builtin "add" (fib 8, 8)) diff --git a/tests/19-list.sml b/tests/19-list.sml deleted file mode 100644 index 52404dc..0000000 --- a/tests/19-list.sml +++ /dev/null @@ -1,11 +0,0 @@ -infix 6 + -infixr 5 :: - -datatype 'a list = Nil | :: of 'a * 'a list - -fun x + y = __builtin "add" (x, y) - -fun foldl _ acc Nil = acc - | foldl f acc (x :: xs) = foldl f (f (x, acc)) xs - -val _ = __builtin "exit" (foldl op + 0 (1 :: 2 :: 3 :: 6 :: 8 :: 10 :: 12 :: Nil)) diff --git a/tests/190-list.sml b/tests/190-list.sml new file mode 100644 index 0000000..de69c4a --- /dev/null +++ b/tests/190-list.sml @@ -0,0 +1,10 @@ +infix 6 + + +datatype 'a list = Nil | :: of 'a * 'a list + +fun x + y = __builtin "add" (x, y) + +fun foldl _ acc Nil = acc + | foldl f acc (x :: xs) = foldl f (f (x, acc)) xs + +val _ = __builtin "exit" (foldl op + 0 (1 :: 2 :: 3 :: 6 :: 8 :: 10 :: 12 :: Nil)) diff --git a/tests/20-structure.sml b/tests/20-structure.sml deleted file mode 100644 index dfc7b9b..0000000 --- a/tests/20-structure.sml +++ /dev/null @@ -1,5 +0,0 @@ -structure S = struct - val fourtyTwo = 42 -end - -val _ = __builtin "exit" S.fourtyTwo diff --git a/tests/200-structure.sml b/tests/200-structure.sml new file mode 100644 index 0000000..dfc7b9b --- /dev/null +++ b/tests/200-structure.sml @@ -0,0 +1,5 @@ +structure S = struct + val fourtyTwo = 42 +end + +val _ = __builtin "exit" S.fourtyTwo diff --git a/tests/21-struct-datatype.sml b/tests/21-struct-datatype.sml deleted file mode 100644 index ab714ea..0000000 --- a/tests/21-struct-datatype.sml +++ /dev/null @@ -1,6 +0,0 @@ -structure S = struct - datatype D = D of int -end - -val S.D x = S.D 42 -val _ = __builtin "exit" x diff --git a/tests/210-struct-datatype.sml b/tests/210-struct-datatype.sml new file mode 100644 index 0000000..ab714ea --- /dev/null +++ b/tests/210-struct-datatype.sml @@ -0,0 +1,6 @@ +structure S = struct + datatype D = D of int +end + +val S.D x = S.D 42 +val _ = __builtin "exit" x diff --git a/tests/22-nested-struct.sml b/tests/22-nested-struct.sml deleted file mode 100644 index 1eaf6ab..0000000 --- a/tests/22-nested-struct.sml +++ /dev/null @@ -1,9 +0,0 @@ -structure S = struct - structure I = struct - val fourtyTwo = 42 - end -end - -structure T = S.I - -val _ = __builtin "exit" T.fourtyTwo diff --git a/tests/220-nested-struct.sml b/tests/220-nested-struct.sml new file mode 100644 index 0000000..1eaf6ab --- /dev/null +++ b/tests/220-nested-struct.sml @@ -0,0 +1,9 @@ +structure S = struct + structure I = struct + val fourtyTwo = 42 + end +end + +structure T = S.I + +val _ = __builtin "exit" T.fourtyTwo diff --git a/tests/225-two-structs.sml b/tests/225-two-structs.sml new file mode 100644 index 0000000..465840f --- /dev/null +++ b/tests/225-two-structs.sml @@ -0,0 +1,9 @@ +structure A = struct + val fourtyTwo = 42 +end +val B = 10 +structure X = struct + val Y = A.fourtyTwo +end + +val _ = __builtin "exit" X.Y diff --git a/tests/23-signature.sml b/tests/23-signature.sml deleted file mode 100644 index 01a8494..0000000 --- a/tests/23-signature.sml +++ /dev/null @@ -1,10 +0,0 @@ -signature SIG = sig - val x : int -end - -structure Struct :> SIG = struct - val privateField = 41 - val x = 42 -end - -val _ = __builtin "exit" Struct.x diff --git a/tests/230-signature.sml b/tests/230-signature.sml new file mode 100644 index 0000000..01a8494 --- /dev/null +++ b/tests/230-signature.sml @@ -0,0 +1,10 @@ +signature SIG = sig + val x : int +end + +structure Struct :> SIG = struct + val privateField = 41 + val x = 42 +end + +val _ = __builtin "exit" Struct.x diff --git a/tests/24-functor.sml b/tests/24-functor.sml deleted file mode 100644 index d18337e..0000000 --- a/tests/24-functor.sml +++ /dev/null @@ -1,17 +0,0 @@ -signature MagicNumber = sig - val n : int -end - -functor Exiter(N : MagicNumber) = struct - fun exit _ = __builtin "exit" N.n -end - -structure FourtyTwo = struct - val a = 16 - val n = 42 - val z = 38 -end - -structure FourtyTwoExiter = Exiter(FourtyTwo) - -val _ = FourtyTwoExiter.exit () diff --git a/tests/240-functor.sml b/tests/240-functor.sml new file mode 100644 index 0000000..d18337e --- /dev/null +++ b/tests/240-functor.sml @@ -0,0 +1,17 @@ +signature MagicNumber = sig + val n : int +end + +functor Exiter(N : MagicNumber) = struct + fun exit _ = __builtin "exit" N.n +end + +structure FourtyTwo = struct + val a = 16 + val n = 42 + val z = 38 +end + +structure FourtyTwoExiter = Exiter(FourtyTwo) + +val _ = FourtyTwoExiter.exit () diff --git a/tests/250-list.sml b/tests/250-list.sml new file mode 100644 index 0000000..4aeecf2 --- /dev/null +++ b/tests/250-list.sml @@ -0,0 +1,6 @@ +val _ = __builtin "exit" + (case [1, 2, 42] of + [] => 10 + | [x] => x + | [_, _, x] => x + | _ => 13) diff --git a/tests/260-cons.sml b/tests/260-cons.sml new file mode 100644 index 0000000..f01cefe --- /dev/null +++ b/tests/260-cons.sml @@ -0,0 +1,4 @@ +val _ = __builtin "exit" + (case 42 :: [] of + x :: _ => x + | _ => 13) -- cgit v1.3.1