DYNA Fall 2025: 29-30 September. More info

INTERNAL NOTE: LINKS ON THIS PAGE WILL NEED TO BE UPDATED WHEN DYALOG V20.0 IS RELEASED AS THE ONLINE DOCUMENTATION URLS WILL ALL CHANGE

Since its inception, Dyalog APL has been enhanced in ways that might be new to you if you are familiar with a different flavour of APL. This page highlights some of the more significant functionality that has been included in Dyalog APL but is not present in all of the following four APL systems: APL+Win, APL2, APLX, and GNU APL. In addition:

  • Release-specific highlights  for Dyalog versions since Dyalog v14.0 (released in June 2014) describe some of the more significant changes in each release.
  • The 2009 video Dyalog APL for other APL users by APLTrainer showcases various features of Dyalog APL and the Dyalog interpreter. Although there have been many other changes since then, this is a useful summary of differences to that point.

General Language Features

Several tutorials and documentation pages describe the behaviour of various language constructs in Dyalog APL:

Object-oriented Features

Dyalog APL supports object-oriented programming (OOP); the Dyalog APL implementation will be very familiar to anyone who knows OOP in C# or Java.

Documentation and tutorials for key aspects are include:

Primitive Functions and Operators

The basic APL building blocks have been expanded to cover often-requested functionality.

Terminology sheet: all primitive functions and operators in Dyalog APL

Primitive functions:

  • Greatest Common Divisor () and Lowest Common Multiple () extend logical OR and AND to useful number theoretic functions
  • Right tack () and Left tack  () are simple but versatile identity functions
  • Materialise () gets the default property of a class instance, and decomposes .NET and COM collections
  • Tally () gives the length of the leading axis as a scalar
  • Unique mask (nub sieve) () indicates the first occurrence of each unique major cell
  • Where () is a primitive of the very familiar /⍳⍴ idiom, extended to higher rank arrays and non-negative integer values
  • Interval index () efficiently determines into which “buckets” values fall
  • Nest (enclose-if-simple) and Partition () for APL-2 style partitioning

Primitive operators:

  • Power () iterates a fixed number of times or until a condition is true
  • Commute () simplifies many expressions
  • Constant () turns any value into a function
  • At (@) is a way to amend elements of an array in-place without side effects
  • Bind () (curry) an argument to a dyadic function, producing a monadic function
  • Beside () is basic function composition: X f∘g Y ←→ X f g Y
  • Over () is a common function composition: X f⍥g Y ←→ (g X) f g Y
  • Behind () expresses common patterns: X f⍛g Y ←→ (f X)g Y and f⍛g Y ←→ (f Y)g Y
  • Atop () is a common function composition: X f⍤g Y ←→ f X g Y
  • Rank () applies functions to sub-arrays of a certain rank
  • Key () makes it easy to do things like group-by from SQL and other database systems
  • Stencil () makes it easy to do stencil code for simulations, image processing, cellular automata, and more
  • Variant () supplies extra parameters to system functions
  • Spawn (&) provides simple access to parallel threads

System Functions

Many new system functions have been added to Dyalog:

Dfns (Lambdas)

A dfn is an alternative way to define a function or operator with a lightweight, optionally inline, notation.

Tacit programming

Tacit programming, also called point-free style, refers to usage of functions that are defined in terms of implicit arguments. This is in contrast to the explicit use of arguments in dfns and tradfns (“defined functions”).

Array Notation

Array notation is a way to write almost any array as a single literal, as opposed to constructing it piecemeal using APL primitives and possibly multiple statements:

Documentation <xxx ADD LINK WHEN AVAILABLE xxx>

Video: Fun With Array Notation and Programmatic Variable Assignment

Migrating to Dyalog APL?

There are some tools and resources that can help you to migrate to Dyalog APL.

  • The APLX migration tools repository contains utilities and useful information for the migration of code from APLX to Dyalog. For more information, see the APLX Archive.
  • The ]TRANSFER.In user command imports files in APL Transfer Format (.ATF) that are created by other APL systems. See ]In -? for more information.

If you are considering migrating to Dyalog from a different APL, we can offer advice and support as well as putting you in contact with experienced migration consultants.

This is the Learn Master Page. Mike knows this message is here…

Get Support

Technical advice and assistance on all aspects of Dyalog usage is available by e-mail (support@dyalog.com) and/or telephone (+44 1256 830030 – limited to U.K. office hours). Limited advice on design and coding is available, but is not intended to replace the use of the printed and on-line documentation. Except when reporting an issue with the software, users are encouraged to seek advice from the user community via the Dyalog Forum (reading the content of the forums does not require membership).

Search our website...