[plt-scheme] A crazy idea (fMUMPS)

From: Gregory Woodhouse (gregory.woodhouse at sbcglobal.net)
Date: Tue Dec 27 01:22:36 EST 2005

On Dec 26, 2005, at 6:18 AM, Shriram Krishnamurthi wrote:

> It would certainly be reasonable to construct a functional
> basis for Mumps -- I would recommend that anyone trying to
> do this first study Chris Okasaki's wonderful book on functional
> data-structures to get insights into how best to organize things
> underneath the surface.

I found the dissertation online (and am reading it!) It, does,  
indeed, look very interesting, and I can already see it addresses a  
number of concerns. I should order the book (and learn some ML, too).  
I've actually been rather intrigued by Haskell for a number of  
reasons (strong typing, lazy evaluation). I haven't had occasion to  
learn ML, although it's beginning to seem almost mandatory for  
functional programmers.

> But of course, no Mumps programmer
> is going to adopt this,

Unfortunately, I'm sure you're right. I have made some (unsuccessful)  
attempts to persuade fellow MUMPS programmers that functional  
programming was interesting, but only one person showed much  
interest, and he has a Lisp background. There's no one reason for my  
interest in Scheme or functional programming, but I do think that  
exploring the use of functional languages and technique in medical  
information systems would be worthwhile. Advantages range from  
improved possibilities of applying formal verification techniques to  
strong similarity code I've seen (and written) over and over to  
functional code (executing bits of code in the form of strings as a  
way of simulating higher order functions, passing bits of code to  
"iterators" as a parameter, the extensive use of symbol tables in  
ways reminiscent of closures, and so forth). I'm skeptical of the  
possibilities of implementing standard MUMPS as a functional  
application, at least if the goal is to run VistA -- and I'm not  
entirely sure there would be that much to be gained. But the  
parallels I've hinted at are tantalizing. On top of that, it made a  
big impression on me when I was forced to write code to parse through  
essentially all of VistA to build a dependency graph. Such an  
exercise should simply not be necessary! Beyond that, writing simple  
user interfaces in Java (Swing) and then making what on the surface  
appeared to be small changes to the UI and finding that it required a  
fair amount of work led me to question whether OO represents the  
right (or at least only) way to extend MUMPS. You may know that  
InterSystems has developed an OO extension to traditional MUMPS that  
is quite interesting, and there is an open source product known as  
ESI Objects doing something similar, but with which I have no  
experience.  At one point, there was discussion of extending the ANSI  
standard along OO lines, but I've started to wonder of late whether a  
functional language (even if it isn't a strict superset) would be  
worth exploring.

> so is the point to give PLT programmers
> a better set of associative libraries?

Certainly, the lack of associative data structures in Scheme has been  
a frustration to me, but I'm enough of  a neophyte, that I haven't  
been ready to say this is a language deficiency and not just a gap in  
my education. I've looked at ideas ranging from monads to  
continuation passing, but don't really think I'm on the right track.  
FWIW, the monadic style of programming in Haskell reminds me of  
device I/O (writing to a device multiple times schedules "actions"  
that will be executed sequentially, but at an unknown time). and it  
is intriguing that lists can be treated as monads, but I'm told that  
what is essential here is the non-determinism implicit in lazy  
evaluation (no Church-Rosser theorem for actions), so that seems it  
may be a bit of a false start.
> Shriram

I'm a programmer, but just an amateur in computer science.  
Nevertheless, the degree of coupling in code I've seen an the  
exponentially increasing cost of incremental enhancements is  
something difficult for me to forget or ignore. To me, functional  
approaches seem more promising than object oriented ones (though I'm  
not sure the categories have to be mutually exclusive), and so I  
suppose I've been trying to think through how I might go about  
developing code of the type I write in my day to day work using  
functional techniques and f functional language. (I'm also a bit of a  
pariah over on Hardhats for suggesting that a time comes when it is  
better to step back and write new code from scratch, rather than  
continuing to modify the same code.)

Gregory Woodhouse
gregory.woodhouse at sbcglobal.net

"Nothing is as powerful than an idea
whose time has come."
-- Victor Hugo

Posted on the users mailing list.