week1: mart
authorMart Lubbers <mart@martlubbers.net>
Thu, 5 Feb 2015 20:05:17 +0000 (21:05 +0100)
committerMart Lubbers <mart@martlubbers.net>
Thu, 5 Feb 2015 20:05:17 +0000 (21:05 +0100)
week1/mart/1.txt [new file with mode: 0644]
week1/mart/MatchStrings.dcl [new file with mode: 0644]
week1/mart/MatchStrings.icl [new file with mode: 0644]

diff --git a/week1/mart/1.txt b/week1/mart/1.txt
new file mode 100644 (file)
index 0000000..7ac4230
--- /dev/null
@@ -0,0 +1,3 @@
+1.1:
+1.2:
+Beide niet mogelijk zonder IDE(linux)
diff --git a/week1/mart/MatchStrings.dcl b/week1/mart/MatchStrings.dcl
new file mode 100644 (file)
index 0000000..527447c
--- /dev/null
@@ -0,0 +1,8 @@
+definition module MatchStrings\r
+\r
+head                   ::        String -> Char\r
+tail                   ::        String -> String\r
+is_gelijk              :: String String -> Bool\r
+is_deelstring  :: String String -> Bool\r
+is_deel                        :: String String -> Bool\r
+is_match               :: String String -> Bool\r
diff --git a/week1/mart/MatchStrings.icl b/week1/mart/MatchStrings.icl
new file mode 100644 (file)
index 0000000..f10df45
--- /dev/null
@@ -0,0 +1,54 @@
+implementation module MatchStrings\r
+\r
+import StdEnv\r
+\r
+head :: String -> Char\r
+head "" = abort "Empty String"\r
+head s = s.[0]\r
+\r
+tail :: String -> String\r
+tail "" = abort "Empty String"\r
+tail s = s % (1, size s - 1)\r
+\r
+is_gelijk :: String String -> Bool\r
+is_gelijk "" "" = True\r
+is_gelijk a b = (size a == size b) && (head a == head b) && is_gelijk (tail a) (tail b)\r
+\r
+is_deelstring :: String String -> Bool\r
+is_deelstring _ "" = False\r
+is_deelstring a b = is_begin a b || is_deelstring a (tail b)\r
+\r
+is_begin :: String String -> Bool\r
+is_begin "" _ = True\r
+is_begin _ "" = False\r
+is_begin a b = head a == head b && is_begin (tail a) (tail b)\r
+\r
+is_deel :: String String -> Bool\r
+is_deel "" _ = True\r
+is_deel _ "" = False\r
+is_deel a b = head a == head b && is_deel (tail a) (tail b) || is_deel a (tail b)\r
+\r
+is_match :: String String -> Bool\r
+is_match a b = is_begin_match a b || size b > 0 && is_begin_match a (tail b)\r
+\r
+is_begin_match :: String String -> Bool\r
+is_begin_match "" _ = True\r
+is_begin_match a "" = head a == '*' && size a == 1\r
+is_begin_match a b\r
+| head a == '.' || head a == head b = is_begin_match (tail a) (tail b)\r
+| head a == '*' = is_begin_match a (tail b) || is_begin_match (tail a) b\r
+| otherwise = False\r
+\r
+//Start= (head pink_floyd, tail pink_floyd)\r
+//Start= is_gelijk     "" " "\r
+//Start= is_deelstring "there"          pink_floyd\r
+//Start= is_deelstring "there"          marillion\r
+//Start= is_deel       "there"          marillion\r
+//Start= is_deel       "she and her"    pink_floyd\r
+//Start= is_deel       radiohead        pink_floyd\r
+//Start= is_match      "*.here*.here*." pink_floyd\r
+//Start= is_match      ".here.here."    pink_floyd\r
+\r
+pink_floyd= "Is there anybody in there?"\r
+marillion= "Just for the record"\r
+radiohead= "There there"\r