make typeclasses into records
The current design of tyepclasses is not good. If the typeclass has a single member function with a fairly generic type (examples: job arrival and job cost) then typeclass inference can not tell instances of the typeclasses from each other. For example, the typeclass inference can confuse an instance of JobCost
as an instance of JobArrival
. To solve this, I put the functions of the typeclasses into records.