README.org: Update the roadmap.

This commit is contained in:
Sergiu Ivanov 2020-11-29 23:29:31 +01:00
parent 485aa4ca95
commit c7912705ca
1 changed files with 28 additions and 21 deletions

View File

@ -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