DYNA26: 27 April 2026. More info

Since its inception, Dyalog APL has been enhanced in ways that might be new to you if you are familiar with a different APL implementation. 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 implmentations: 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 APL Wiki summarises the release-specific highlights for Dyalog versions since Dyalog v1.0 (released in April 1983).
  • 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 implementation will be very familiar to anyone who knows OOP in C# or Java. Documentation and tutorials for key aspects include:

Primitive Functions and Operators

The basic APL building blocks have been expanded to cover often-requested functionality. Terminology cheatsheet: 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, including decomposing .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, including higher rank arrays and non-negative integer values
  • Interval index () efficiently determines into which “buckets” values fall
  • Nest () encloses simple array
  • Partition () gives APL2-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
  • Behind () is basic function composition: X f⍛g Y ←→ (f X)g Y and f⍛g Y ←→ (f Y)g Y
  • Over () is a basic function composition: X f⍥g Y ←→ (g X) f g Y
  • Atop () is a basic 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 access to simple 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: Array Notation Video: Fun With Array Notation and Programmatic Variable Assignment

Migrating to Dyalog APL?

If you are considering migrating to Dyalog from a different APL implementation, there are tools and resources available to help you. See Migrating Your APL Application to Dyalog for more information.

Dyalog APL for APL Programmers

What’s different in Dyalog APL (and why it matters)

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.

    Add a header to begin generating the table of contents


    Morten Kromberg
    Exploring the differences between Dyalog APL and other APL implementations

    If you would like more information on our consultancy services, you can email us at sales@dyalog.com, call +44 1256 830030, or send us a message.

    Morten Kromberg, Technical Director (CTO)

    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...
    Dyalog Ltd