definition module ShopDSLboilerplate import ShopDSL import GenVisualize, GenUpdate // Generic boilerplate code: derive gPrint Book, Order, Address, CartItem, CartAmount, ShopAction, InCart, ProductSearch derive gParse Book, Order, Address, CartItem, CartAmount, ShopAction, InCart, ProductSearch derive gVisualize Book, Order, Address, CartItem, CartAmount, ShopAction, InCart, ProductSearch derive gUpdate Book, Order, Address, CartItem, CartAmount, ShopAction, InCart, ProductSearch // Manual boilerplate code: class billingAddressOf a :: a -> Address class shippingAddressOf a :: a -> Address class amountOrderedOf a :: a -> Int class nameOf a :: a -> String class id_Of a :: a -> DBRef a class priceOf a :: a -> Currency class inStockOf a :: a -> Int class billingAddressUpd a :: a Address -> a class shippingAddressUpd a :: a Address -> a class amountOrderedUpd a :: a Int -> a class nameUpd a :: a String -> a class id_Upd a :: a (DBRef a) -> a class priceUpd a :: a Currency -> a class inStockUpd a :: a Int -> a instance id_Of Book; instance id_Upd Book instance nameOf Book; instance nameUpd Book instance priceOf Book; instance priceUpd Book instance inStockOf Book; instance inStockUpd Book instance nameOf (CartItem a); instance nameUpd (CartItem a) instance inStockOf (CartItem a); instance inStockUpd (CartItem a) instance amountOrderedOf (CartItem a); instance amountOrderedUpd (CartItem a) instance priceOf (CartItem a); instance priceUpd (CartItem a) instance id_Of (Order a); instance id_Upd (Order a) instance nameOf (Order a); instance nameUpd (Order a) instance billingAddressOf (Order a); instance billingAddressUpd (Order a) instance shippingAddressOf (Order a); instance shippingAddressUpd (Order a) instance nameOf InCart; instance nameUpd InCart instance amountOrderedOf InCart; instance amountOrderedUpd InCart instance priceOf InCart; instance priceUpd InCart