From a7d7542dc646a5fd124ef71e71ce260889f1701b Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 2 Feb 2016 19:24:50 +0100 Subject: Moved to 1415 directory --- files/practicum/FQL.icl | 93 ------------------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 files/practicum/FQL.icl (limited to 'files/practicum/FQL.icl') diff --git a/files/practicum/FQL.icl b/files/practicum/FQL.icl deleted file mode 100644 index 7d7a029..0000000 --- a/files/practicum/FQL.icl +++ /dev/null @@ -1,93 +0,0 @@ -module FQL - -import StdEnv -import StdT -import Group - -:: Nummer = { groep :: String // De naam van de groep - , album :: String // De naam van het album - , jaar :: Int // Het jaar van uitgave - , track :: Int // Track nummer van het nummer (1 ..) - , titel :: String // Naam van het nummer - , tags :: [String] // Beschrijvende tags van het nummer / album - , lengte:: T // Lengte van het nummer - , land :: [String] // Land van oorsprong van groep - } - -Start world -# (ok,dbs,world) = fopen "Nummers.dbs" FReadText world -| not ok = abort "Kon bestand 'Nummers.dbs' niet openen." -# (inhoud,dbs) = filelines dbs -# (ok,world) = fclose dbs world -| not ok = abort "Kon bestand 'Nummers.dbs' niet sluiten na lezen." -# nummersDB = [ { groep = group - , album = cd - , jaar = toInt year - , track = toInt track - , titel = title - , tags = sort (symbol_separated_list ',' tags) - , lengte= fromString length - , land = sort (symbol_separated_list ',' countries) - } - \\ [_,group,cd,year,track,title,tags,length,countries] <- collect (nr_of_fields+1) // verzamel alle elementen van een entry - (drop (nr_of_fields+1) // verwijder eerste elementen (headers) - (map initString inhoud)) // verwijder alle \n - ] -= (alle_groepen nummersDB,world) -where - nr_of_fields = 8 - -alle_groepen :: [Nummer] -> [String] -alle_groepen db = abort "alle_groepen nog niet geimplementeerd\n" - -alle_jaarblokken :: [Nummer] -> [String] -alle_jaarblokken db = abort "alle_jaarblokken nog niet geimplementeerd\n" - -alle_albums_van :: String [Nummer] -> [(Int,String)] -alle_albums_van band db = abort "alle_albums_van nog niet geimplementeerd\n" - -alle_tracks :: String String [Nummer] -> [(Int,String,T)] -alle_tracks cd band db = abort "alle_tracks nog niet geimplementeerd\n" - -speelduur_albums :: [Nummer] -> [(T,String,String)] -speelduur_albums db = abort "speelduur_albums nog niet geimplementeerd\n" - -totale_speelduur :: [Nummer] -> T -totale_speelduur db = abort "totale_speelduur nog niet geimplementeerd\n" - -nederlandse_metal :: [Nummer] -> [String] -nederlandse_metal db = abort "nederlandse_metal nog niet geimplementeerd\n" - - -/* De volgende functies zijn nodig in de Start functie om het bestand 'Nummers.dbs' in te lezen. - Je hoeft op dit moment nog niet te begrijpen wat hier staat. -*/ - -// filelines leest alle regels in van file. -filelines :: !*File -> (![String],!*File) -filelines file -# (end,file) = fend file -| end = ([],file) -# (line,file) = freadline file -# (lines,file) = filelines file -= ([line:lines],file) - -// initString verwijdert laatste teken aan het einde van een regel. -initString :: !String -> String -initString str = str%(0,size str-2) - -/* collect n [x_1, ..., x_n, x_{n+1}, ... x_{2n}, ..., x_{mn+1} ... x_{mn+k}] - = [[x_1, ..., x_n], [x_{n+1}, ... x_{2n}], ..., [x_{(m-1)n+1} ... x_{mn}]] - waar: - n > 0 /\ m >= 0 /\ k <= n -*/ -collect :: !Int ![x] -> [[x]] -collect n list -| length groupN < n = [] -| otherwise = [groupN:collect n list`] -where - (groupN,list`) = splitAt n list - -symbol_separated_list :: !Char !String -> [String] -symbol_separated_list c str - = filter (\str -> str <> "" && str <> (toString c)) [toString cs \\ cs <- group ((==) c) (fromString str)] -- cgit v1.2.3