Using the Mmx-light interpreter

1.Terminal interface

The Mmx-light interpreter starts with the command:

Shell] 
mmx-light

–––––––––––––––––––––––––––––––

|:*) Welcome to Mathemagix-light 0.4 (*:|

|––––––––––––––––––––––––––––––|

| This software falls under the GNU General Public License |

| It comes without any warranty whatsoever |

| www.mathemagix.org |

| (c) 2001–2010 |

–––––––––––––––––––––––––––––––

If you use the interpreter in a textual context, several shortcuts can be very useful such as:

Different modes are available:

2.Loading Mathemagix files

A classical way to develop Mathemagix code is to edit files and load them from the interpreter. As an example, we give below the content of a file step1.mmx (in mmxtools/mmx):

f (n: Int): Int == { 
  if n < 2 then return n; 
  else {
    mmout << n << "\n";
    if n mod 2 = 0 then return f (n quo 2);
    else return f (3*n + 1);
  }
}

It can be used from the interpreter as follows:

Mmx]  
include "mmxlight/step1.mmx"
Mmx]  
f 5

3.Using Mmx-light files as scripts

The interpreter can be used directly with a file:

mmx-light step1.mmx

Mathemagix files can also be used as scripts, as shown in this example:

#!/usr/bin/env mmx-light
m: Double := 0.0;
for i in 1..#argv do
  m := m + as_double argv[i];
mmout << "Mean: " << m / (#argv-1) << "\n";

If this code is saved into a file, say mean, it can be used as follows:

chmod u+x mean
./mean 3.2 5.6 -1.7

Mean: 2.36666666667

provided that the command mmx-light is available.

4.Loading a package

The command to load and use the types and functions exported by an external library is use:

use "package";

Here the dynamic library libmmxpackage.so will be searched in the loading path (see variable LD_LIBRARY_PATH or DYLD_LIBRARY_PATH).

5.The environment files

The first time the shell is launched it creates a .mathemagix in the home directory. A warning message is printed.

The file .mathemagix/etc/boot.mmx is automatically loaded at startup. This is the right place to customize the shell and to load the packages you frequently use. In order to load packages you can proceed as follows:

if supports? "numerix" then use "numerix";
if supports? "algebramix" then use "algebramix";

Prior to user's boot file a global boot file (usually /usr/local/etc/mathemagix/boot.mmx) is loaded. In case you wish to disable both boot files use the option –noboot within the mmx-light command.

Within an interactive session, ending a line with a ';' actually means finishing with a null instruction. As a consequence this extra ';' prevents from printing the output of the previous instruction.

6.Help function

Help on functions and types can be obtained with the help command:

Mmx]  
help Generator Generic

Generator (Generic)
(Class)

Available functions

!= : (Generator (Generic), Generator (Generic)) -> Boolean

= : (Generator (Generic), Generator (Generic)) -> Boolean

@ : Generator (Generic) -> Generator (Generic)

alias : Generator (Generic) -> Alias (Generator (Generic))

flatten : Generator (Generic) -> Syntactic

Mmx]  
help infix +

+ : (Int, Int) -> Int
(Native)
+ : (Double, Double) -> Double
(Native)
+ : (Syntactic, Syntactic) -> Syntactic
(Native)

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License. If you don't have this file, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.