MLud

MLud is a runtime-extensible, object-oriented, prototype-based language designed for building on-line collaborative environments built on top of Standard ML of New Jersey. It supports dynamic delegation with multiple dispatch, built-in support for several useful datatypes, inline ML, and checkpoint persistence. Its main influences include Cecil, Mica, Coldmud, and ML.

Download and Installation

To try MLud out for yourself, you need the release version of SML of New Jersey, version 110.0.7. The working versions will not work with MLud. Moreover, you need the following packages:

Once this is installed, download and extract one of these packages:

FilenameSize
mlud.tar.gz54641
mlud.zip76047

Then, cd into the mlud/src directory, start SML/NJ, and type CM.make(). This will load the runtime system for MLud. Because generated code uses unqualified names from the ObjectModel module, you will have to use:

open ObjectModel;
Next, you need to load the part of the runtime that is written in MLud itself. To do this, execute this command:
MludLoader.loadIndexFile("mlud/", "system.idx");
This loads a lengthy list of mlud files listed in system.idx. The order is very critical; any new files should be added to the end, or loaded afterwards. The files in system.idx also include a small demo MUD system with character creation, a couple rooms and some wandering mobiles which runs on port 1900. You can start it with:
MludLoader.evalMlud("$startup.main[]");
You can then connect to it from a shell with:
telnet localhost 1900
You can explore the MLud language from within this system using the eval command, which evaluates a MLud expression and displays the result. For example:
> eval 2^1000
107150860718626732094842504906000181056140481170553360744375038837035105112493
612249319837881569585812759467291755314682518714528569231404359845775746985748
039345677748242309854210746050623711418779541821530464749835819412673987675591
65543946077062914571196477686542167660429831652624386837205668069376
>

If you have success or failure with the system, or if you have suggestions, requests, or death threats, don't hesitate to contact me.

Other code from Moonflare

Moonflare home

The author, Derrick Coetzee, waives all rights to all content under the Creative Commons Zero Waiver (CC0 1.0 Universal).