diff options
| author | Camil Staps | 2015-02-05 21:15:03 +0100 | 
|---|---|---|
| committer | Camil Staps | 2015-02-05 21:15:03 +0100 | 
| commit | 0fe755ca58ae1fe1e05d92cc92f3236d51e9f68e (patch) | |
| tree | 82723fdc7a1cd452aa667bcaf20780b2b1f26002 /week1/mart | |
| parent | Moved (diff) | |
| parent | Merge branch 'master' of github.com:dopefishh/fp1 (diff) | |
Merge branch 'master' of https://github.com/dopefishh/fp1
Diffstat (limited to 'week1/mart')
| -rw-r--r-- | week1/mart/1.txt | 3 | ||||
| -rw-r--r-- | week1/mart/MatchStrings.dcl | 8 | ||||
| -rw-r--r-- | week1/mart/MatchStrings.icl | 54 | 
3 files changed, 65 insertions, 0 deletions
| diff --git a/week1/mart/1.txt b/week1/mart/1.txt new file mode 100644 index 0000000..7ac4230 --- /dev/null +++ b/week1/mart/1.txt @@ -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 index 0000000..527447c --- /dev/null +++ b/week1/mart/MatchStrings.dcl @@ -0,0 +1,8 @@ +definition module MatchStrings
 +
 +head			::        String -> Char
 +tail			::        String -> String
 +is_gelijk		:: String String -> Bool
 +is_deelstring	:: String String -> Bool
 +is_deel			:: String String -> Bool
 +is_match		:: String String -> Bool
 diff --git a/week1/mart/MatchStrings.icl b/week1/mart/MatchStrings.icl new file mode 100644 index 0000000..f10df45 --- /dev/null +++ b/week1/mart/MatchStrings.icl @@ -0,0 +1,54 @@ +implementation module MatchStrings
 +
 +import StdEnv
 +
 +head :: String -> Char
 +head "" = abort "Empty String"
 +head s = s.[0]
 +
 +tail :: String -> String
 +tail "" = abort "Empty String"
 +tail s = s % (1, size s - 1)
 +
 +is_gelijk :: String String -> Bool
 +is_gelijk "" "" = True
 +is_gelijk a b = (size a == size b) && (head a == head b) && is_gelijk (tail a) (tail b)
 +
 +is_deelstring :: String String -> Bool
 +is_deelstring _ "" = False
 +is_deelstring a b = is_begin a b || is_deelstring a (tail b)
 +
 +is_begin :: String String -> Bool
 +is_begin "" _ = True
 +is_begin _ "" = False
 +is_begin a b = head a == head b && is_begin (tail a) (tail b)
 +
 +is_deel :: String String -> Bool
 +is_deel "" _ = True
 +is_deel _ "" = False
 +is_deel a b = head a == head b && is_deel (tail a) (tail b) || is_deel a (tail b)
 +
 +is_match :: String String -> Bool
 +is_match a b = is_begin_match a b || size b > 0 && is_begin_match a (tail b)
 +
 +is_begin_match :: String String -> Bool
 +is_begin_match "" _ = True
 +is_begin_match a "" = head a == '*' && size a == 1
 +is_begin_match a b
 +| head a == '.' || head a == head b = is_begin_match (tail a) (tail b)
 +| head a == '*' = is_begin_match a (tail b) || is_begin_match (tail a) b
 +| otherwise = False
 +
 +//Start= (head pink_floyd, tail pink_floyd)
 +//Start= is_gelijk     "" " "
 +//Start= is_deelstring "there"          pink_floyd
 +//Start= is_deelstring "there"          marillion
 +//Start= is_deel       "there"          marillion
 +//Start= is_deel       "she and her"    pink_floyd
 +//Start= is_deel       radiohead        pink_floyd
 +//Start= is_match      "*.here*.here*." pink_floyd
 +//Start= is_match      ".here.here."    pink_floyd
 +
 +pink_floyd= "Is there anybody in there?"
 +marillion= "Just for the record"
 +radiohead= "There there"
 | 
