This chapter describes the Logo language specification and key language concepts, and the details of the Turtle Tracks implementation of Logo, including tokenizing and parsing, command semantics, and the runtime model. Logo is a derivative and distant cousin of the Lisp programming language. Like Lisp, it employs no static type checking., and its data structures consist of string atoms and typeless lists. State is represented in the form of symbols that can be bound to functions, immutable data, and several other elements of the environment.
All data is referenced through pointer semantics, and a garbage collector reclaims unused space.
Unlike most languages in the Lisp family, however, Logo uses dynamic scoping, and Logo functions are not first-class. Logo also includes a large library of primitive functions, including more powerful list-manipulation functions than are typically offered by implementations of Common Lisp or Scheme. In addition, Logo syntax differs from most variants of Lisp in several key areas. First, list boundaries are denoted by square brackets instead of parens, and do not delimit separate function calls. Also, Logo syntax supports several infix operators for use in mathematical expressions.