Copyright | (c) Justus Adam, 2015 |
---|---|

License | LGPL-3 |

Maintainer | development@justusadam.com |

Stability | experimental |

Portability | POSIX |

Safe Haskell | Safe |

Language | Haskell2010 |

Exports the most important functions neccessary for the actual work of this software

- calcFromMap :: Ord s => Map s [Lesson s] -> Maybe [MappedSchedule s]
- calcFromList :: Ord s => [Lesson s] -> Maybe [MappedSchedule s]
- totalWeight :: MappedSchedule a -> Int
- data Lesson s = Lesson {}
- type Timeslot = (Int, Int)
- data Target
- data Rule = Rule {}
- mapToSubject :: Ord s => [Lesson s] -> Map s [Lesson s]
- type MappedSchedule s = Map Timeslot (Lesson s)
- weigh :: [Rule] -> [Lesson s] -> [Lesson s]

# Documentation

calcFromMap :: Ord s => Map s [Lesson s] -> Maybe [MappedSchedule s]

Main evaluation function
Transforms a map of weighted `Lesson`

s of a particular subject into a list
of lightest schedules by branching the evaluation at avery point
where there is a timeslot collision

calcFromList :: Ord s => [Lesson s] -> Maybe [MappedSchedule s]

Same as `calcFromMap`

but operates on a List of `Lesson`

s

totalWeight :: MappedSchedule a -> Int

Convenience function to obtain the total weight of a particular Schedule

data Lesson s

Base datastructure for representing lessons

data Rule

mapToSubject :: Ord s => [Lesson s] -> Map s [Lesson s]

Map a List of `Lesson`

s to their respective subjects

type MappedSchedule s = Map Timeslot (Lesson s)

type Alias for readability represents a schedule