Add first part of hw solution

diff --git a/s3/s.sml b/s3/s.sml
index d4ceed5..946ff99 100644
--- a/s3/s.sml
+++ b/s3/s.sml
@@ -39,3 +39,28 @@ datatype typ = Anything
 fun only_capitals strs =
 	List.filter (fn s => Char.isUpper(String.sub(s,0))) strs

+fun longest_string1 strs =
+	List.foldl (fn (acc,s) =>
+	  if String.size acc > String.size s then acc else s
+	) "" strs
+
+fun longest_string2	strs =
+	List.foldl (fn (acc,s) =>
+	  if String.size acc >= String.size s then acc else s
+	) "" strs
+
+fun longest_string_helper f strs =
+	List.foldl (fn (acc, s) =>
+		if f(String.size acc, String.size s)
+		then acc
+		else s
+	) "" strs
+
+val longest_string3 = longest_string_helper (fn (x,y) => x > y)
+
+val longest_string4 = longest_string_helper (fn (x,y) => x >= y)
+
+fun longest_capitalized strs =
+	longest_string3 o only_capitals o strs
+
+val rev_string = (String.implode o List.rev o String.explode)
diff --git a/s3/t.sml b/s3/t.sml
index 3557cb7..91c3be4 100644
--- a/s3/t.sml
+++ b/s3/t.sml
@@ -15,12 +15,28 @@ val test1_4 = only_capitals [] = []

 val test2 = longest_string1 ["A","bc","C"] = "bc"

+val test2_1 = longest_string1 ["A", "bc", "bx", "C"] = "bc"
+
+val test2_2 = longest_string1 [] = ""
+
+val test2_3 = longest_string1 ["A", "bc", "bxa", "C"] = "bxa"
+
 val test3 = longest_string2 ["A","bc","C"] = "bc"

+val test3_1 = longest_string2 ["A", "bc", "bx", "C"] = "bx"
+
 val test4a= longest_string3 ["A","bc","C"] = "bc"

+val test4a_1 = longest_string1 ["A", "bc", "bx", "C"] = "bc"
+
+val test4a_2 = longest_string1 [] = ""
+
+val test4a_3 = longest_string1 ["A", "bc", "bxa", "C"] = "bxa"
+
 val test4b= longest_string4 ["A","B","C"] = "C"

+val test4b_1 = longest_string2 ["A", "bc", "bx", "C"] = "bx"
+
 val test5 = longest_capitalized ["A","bc","C"] = "A";

 val test6 = rev_string "abc" = "cba";