blob: 6d1b4524d6e91fe116c2b0bd73cd8b231e767f5e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
definition module cashModel
/*
Pieter Koopman, Radboud University, 2017
pieter@cs.ru.nl
Advanced programming
A simple state model for an automated cash register
*/
import StdEnv, GenEq
:: Euro = {euro :: Int, cent :: Int}
:: Product = Pizza | Beer | Cola
:: Action = Add Product | Rem Product | Pay
class euro a :: a -> Euro
instance euro Product, Euro
instance euro Int, (Int, Int), [e] | euro e
instance + Euro
instance - Euro
instance zero Euro
derive gEq Euro
instance ~ Euro
instance == Euro, Product
model :: [Product] Action -> ([Product],[Euro])
|