User Tools

Site Tools


Sidebar

Jump to
AmbientTalk
CRIME
iScheme

at:tutorial:iat

This is an old revision of the document!


Interactive AmbientTalk

Basic Usage

The interactive ambienttalk shell (aka iat) is the command-line interpreter of AmbientTalk. iat supports a very simple read-eval-print loop mode: you can type in expressions (currently only single-line expressions), evaluate them by pressing return and see the value of the expression, for example:

>[1,2,3].map: { |e| e*e }
>>[1,4,9]

To start iat, it suffices to execute it from the command-line, provided the java executable of a JDK1.3.3 or higher JVM is on your executable search path.

Perhaps the most useful usage of iat is to start it with an AmbientTalk source file as argument, e.g.:

iat foo.at

This will make iat evaluate all of the contents of the file foo.at and print out the value of the last expression in the file. If -p was not specified on the command line, iat falls into a read-eval-print loop such that you can play around with the definitions loaded from the file. Any arguments following the filename are treated as arguments to the AmbientTalk program, not to iat. They are accessible by evaluating system.getArgv().

Shell Commands

The AmbientTalk shell understands a limited number of “shell commands”. All input starting with a colon (“:”) is treated by iat as a shell command. The following commands are supported:

  • :q or :quit ⇒ quit the interpreter.
  • :l or :load filepath ⇒ load a file (relative to the directory in which iat was invoked). The content of the file is evaluated as if the file was passed as argument to the shell during startup. The public definitions of the loaded file will be available at top-level.

Input and Output

The AmbientTalk shell enables very simple input and output operations by means of the top-level system object. Here is how to output text to the command-line:

system.println("Hello world");

Reading a line of text from the command-line is a bit less straightforward:

system.readNextLine: { |line|
  system.println("I read: "+line)
} catch: { |ioException| /* ignored */ }

The code between { and } basically serves as a callback function which will be invoked when the next line has been read. The reason for this callback-style read function is that AmbientTalk code may never be blocking. The rationale behind this execution model is explained later, in the chapter on actors.

Command-line Parameters

To get an overview of all available options, execute:

iat --help

The most important options are explained below:

  • -i, –init init-file: you can replace the intialisation code file that AmbientTalk uses to initialize the lexical root of each actor, which defaults to at/init/init.at. This is useful for defining your own “language extensions”.
  • -o, –objectpath objectpath: the object path is for AmbientTalk what the class path is for Java. However, unlike Java's class path, which lists the locations of available Classes, the object path consists of name=directory pairs, separated by the system path separator (: on *NIX/mac, ; on windows). For each such pair, a slot named name is added to the global lobby object, bound to a namespace pointing to the given directory. Hence, evaluating lobby.name.foo in AmbientTalk enables access to the file directory/foo.at. Thanks to the object path, AmbientTalk programs remain free of absolute path names when loading other AmbientTalk files.
  • -n, –network name: allows you to specify the name of the AmbientTalk overlay network to join. Only AmbientTalk VMs started using the same name will be discoverable and will be able to discover this VM. This is primarily useful for debugging or demo purposes, if you don't want other programs to interfere.
at/tutorial/iat.1215604667.txt.gz · Last modified: 2009/02/09 13:57 (external edit)