Version 6 of RMMADWIM

Updated 2004-07-29 12:10:10

Read My Mind And Do What I Mean - a frequently requested functionality

See TIP 131 [L1 ]


RS 2004-07-28 - The RMM part still awaits implementation, but if you transport mind over stdin, here's an initial implementation:

 proc do args {
    puts [uplevel 1 $args]
 }

 proc what {who verb} {
    puts -nonewline "what do you $verb? "
    flush stdout
    uplevel 1 [gets stdin]
 }

 while 1 {do what I mean}

PT 2004-07-29 The division between the functional aspects of RMMADWIM into RMM and a separate DWIM leads me to think about alternative transports than just stdin. The implementation above could trivially be recoded as a network server or even a Web service. Sticking with KISS I consider that the ideal network protocol for the correct transport of DWIM data will be the LOAF protocol. LOAF is unique compared to other network protocols in that everything is specified to just work which is in keeping with the spirit of the RMMADWIM specification.

RS Hm.. but LOAF does nothing, doesn't it? The code above implements at least the classic read-eval-print loop as known from Lisp, or any interactive tclsh... :)

PT No - it may be that LOAF seems to be doing nothing. However, in fact it is doing just what is expected. However, I don't mean that the LOAF protocol should be replacing your read-eval-print loop. Instead I offer the concept of RMMADWIM over LOAF. In the above example stdin would be replaced by a {LOAF]ful stream implementation. In a similar manner we can envisage RMMADWIM/SOAP, or RMMADWIM/BEEP [L2 ] or encapsulation within IP [L3 ] or BLOAT [L4 ] datagrams.


Category Acronym