diff --git a/README.org b/README.org index dbabecd..020b02c 100644 --- a/README.org +++ b/README.org @@ -34,36 +34,43 @@ interaction with Org-mode. that I work on the subsequent items decreases with their position in the list. -*** TODO Think about /not/ using generics for the dynamics - Typed Racket can now type classes, and I can implement the idea - from the module =generics= as a class. However, I got this advice - on Racket Users group: - - #+BEGIN_QUOTE - If you don't need to support arbitrary user implementations, you - can avoid generics and classes altogether and use structs whose - fields contain functions. - #+END_QUOTE - - I will need to think about simpler implementations of the - interface to dynamics, which should also be simpler to type. - *** TODO Convert =dds= to Typed Racket - This will necessarily lead to updates in the comments, which - should be rewritten with Scribble. + Rewriting =dds= with Typed Racket will be a major refactoring, + consisting in the following 3 phases which will happen more or + less in parallel: - I will do the conversion in the directory =typed/=, by - incrementally translating existing modules, definition - by definition. + - define types, add type signatures, add types for functions + I import from =graph=; + - transfer the comments from the source files to Scribble + documentation; + - redefine the generic interface for dynamics, which is currently + in =generics=. - The order I will convert the modules: + I plan to implement the new dynamics interface as a classes, since + Typed Racket can now type classes. I didn't really like generics: + they are quite cumbersome, and I think I can do more with classes. + + People on Racket Users suggested using structures with fields + containing functions, but it does not seem to get me to my goal of + having type-level methods/functions. + + The order in which I will convert the modules: 1. =utils= 2. =functions= - 3. the module defining the interface to dynamics (currently =generics=) + 3. =dynamics= (currently =generics=) 4. =networks= 5. =rs= + This is how I will convert a module =A=: + + 1. Create a copy =A-untyped.rkt=. + 2. Empty =A.rkt=. + 3. Transfer the definitions from =A-untyped.rkt= to =A.rkt= one by + one, adding the necessary types, signatures, and typed imports + as I go. + 4. When done, remove =A-untyped.rkt=. + *** TODO Split =networks= into general networks and threshold Boolean networks *** TODO Submit =update-graph= to =stchang= *** TODO Implement the BN \to RS conversion