refactoors
[mTask.git] / Generics / gdynamic.dcl
1 definition module Generics.gdynamic
2
3 /*
4 Pieter Koopman 2015
5 pieter@cs.ru.nl
6 Radboud University, Nijmegen, The Netherlands
7 ARDSL project
8 */
9
10 import StdGeneric, StdMaybe
11
12 //:: Dyn
13
14 :: DYNAMIC :== [String]
15 :: Dyn = Dyn DYNAMIC // to derive generic functions like iTask
16
17 class dyn a | toGenDynamic{|*|}, fromGenDynamic{|*|} a
18
19 generic toGenDynamic a :: a -> [String]
20 generic fromGenDynamic a :: [String] -> Maybe (a, [String])
21
22 derive toGenDynamic Int, Real, Char, Bool, String, UNIT, PAIR, EITHER, OBJECT, CONS of gcd, FIELD, RECORD of r
23 derive fromGenDynamic Int, Real, Char, Bool, String, UNIT, PAIR, EITHER, OBJECT, CONS of gcd, FIELD, RECORD of r
24
25
26 toDyn :: a -> Dyn | dyn a
27 fromDyn :: Dyn -> Maybe a | dyn a
28