DYNA Fall 2025: 29-30 September. More info

APL Will Change the Way You .

Dyalog delivers a world-class APL development environment that allows both Subject Matter Experts and IT specialists to efficiently convert their ideas into software solutions

APL Forge 2025 is open

The APL Forge is an annual Dyalog competition that promotes APL by challenging participants to push the boundaries of this powerful language. Competitors develop innovative open-source libraries and commercial applications, contributing to the growth of the APL community.
in Competitions

The APL Challenge Round 2024.4 is now open

Join the APL Challenge and transform ideas into code with ease. No programming experience? No problem! Our questions guide you through the basics of APL, empowering you to solve unique problems in a world-class programming environment.
in Competitions

Dyalog version 19.0 is now available

Dyalog version 19.0 is now available and is supported under Microsoft Windows, IBM AIX, Linux (including the Raspberry Pi) and Apple macOS.
in Announcements

Latest Updates from Dyalog

You can also stay up to date with Dyalog on these channels:



What is APL and what are its Benefits?

Concise, Expressive, Array-Centric

APL is an array-oriented programming language. Its natural, concise syntax lets you develop shorter programs while thinking more about the problem you’re trying to solve than how to express it to a computer.

APL uses its own character set rather than reserved words written out in English like most other languages, like C or Python. As a language, APL sits at a very high level of abstraction, making it well suited to concise formulations of algorithms.



Dyalog APL is the Modern APL

We continually provid and improve tools and interfaces to integrate Dyalog with the latest technology stacks.

.NET Integration

Take advantage of the .NET ecosystem, all without leaving APL

Python

Combine Python packages with the expressive power of APL – from Python or from APL

SQL Databases

Interface to SQL databases including Oracle, Access, MySQL and DB2

Dyalog Docker Containers

Deploy your apps quickly with our public Docker containers

Curious?

(Lorem ipsum dolor sit amet, consectetur adipiscing elit.)

Let's look at some code...

In the following examples, we’ll explore the elegance and efficiency of APL through various snippets that will introduce you to its unique symbols, array-oriented approach, and how it simplifies complex operations.



Example One

A Lot of Meaning in a Little Package

Representing primitive concepts with symbols facilitates code with high semantic density.

Define a function to compute the mean average of a list of numbers.

The sum of the list (+⌿⍵) divided by (÷) the length of the list (≢⍵).

      Average ←  {(+⌿⍵) ÷ ≢⍵} 
      
      Average 3 1 4 1 5
2.8

Example Two

Who Needs Loops?

In array-oriented programming, functions apply to collections of data of different shapes in similar ways.

Use the same function to compute the average of a list of numbers, or the average of columns in a matrix.

      matrix ← 2 3⍴3 1 4 1 5 9
3 1 4
1 5 9

      Average matrix
2 3 6.5

Example One

Estimate Pi With 10,000 Pairs of Random Points

Each column in points is a random point in a unit quadrant.

Their distances from the origin are the square root (*0.5) of the sum (+⌿) of squares (*2).

Points are inside the quarter circle if their distance to the origin is less than or equal to 1. (This gives 1 for true and 0 for false.)

The count of inside points is the sum (+⌿) of this.

Pi is approximately 4 times the count of inside points to the total number of points.

Pi←{
     points    ← ?2 ⍵⍴0
     distances ← (+⌿points*2)*0.5
     inside    ← distances≤1
     count     ← +⌿inside
     4 × count ÷ ⍵
 }

      Pi 10000
3.1412

Tacit Programming Encourages Functional Thinking

This 3-train, or fork, is equivalent to the function defined in example three.

Syntactic function composition rules mean we don’t have to repeat ourselves by mentioning the argument explicitly.

This implicit reference to arguments is called tacit (or point-free) programming.

      Average ← +⌿ ÷ ≢   
      
      Average 3 1 4 1 5
2.8

APL's Not Just About Numbers

The same 3-train pattern is used here to partition (⊆) the right argument (⊢) where it is not equal to the left argument (≠).

Of course, you don’t have to write your own CSV parser from scratch – Dyalog ships with many tools to simplify application development and system interaction.

      Split ← ≠ ⊆ ⊢
      
      ','Split'comma,delimited,text'
┌─────┬─────────┬────┐
│comma│delimited│text│
└─────┴─────────┴────┘


Apprehensive? Understandable.

(APL isn't like the status quo.)

Dyalog APL is Unique Among Programming Languages

Dyalog has been honed over the last four decades into a robust environment for creating concise, powerful, software solutions

Array Oriented



APL directly manipulates arrays without loops or mapping.

Natural Representation: Most data collected from the real world fits naturally into a list, table or cube.

Highly Performant



Interpreted APL is competitive with compiled code.

But still quick to Iterate: Arrays consume less memory and allow faster iteration than other structures.

Concise Elegance



As in mathematics, symbols remove ambiguity.

The APL Syntax: a blend of symbols and arrays for unparalleled power and elegance.

Reliability



Write now, run forever.

Timeless Solutions: Refactor code when your business requirement changes, not simply when technology changes.

Extensive Integration



A rich ecosystem of tools and interfaces.

Modern Convenience: APL remains modern and relevant through its enduring design.

Enduring Community



Decades of history and experience.

We’ve Been Around the Block: Software engineers and subject matter experts, all happy to share.

Tool of Thought



Explore data in real time to construct solutions.

Algorithm Mining: Interactive environment allows discovery of algorithms through rapid experimentation.

Multi-paradigm



Array-centric core, object-oriented features.

Flexible Solutions: Use the right tool to suit your needs, optimise your workflow effectively.

Team Dyalog

We promote a culture where innovation, fun, pride, and acceptance is part of our everyday life. We come from a variety of backgrounds, and we learn from each other’s diversity.

Vince Chan
Vince
Customer Support
Flag of the United Kingdom
Mike Mingard
Mike
Designer
Flag of the United Kingdom
Jada Andrade
Jada
Administration Assistant
Flag of the United Kingdom
Morten Kromberg
Morten
Technical Director (CTO)
Flag of Denmark
Bjørn Christensen
Bjørn
Developer
Flag of Denmark
Jason Rivers
Jason
IT Manager
Flag of the United Kingdom
Aaron Hsu
Aaron
Researcher
Flag of U.S.A.
Karta Kooner
Karta
Core Developer
Flag of the United Kingdom

Videos

An extensive collection of videos cover all aspects of the language.

Do Programming Language Features Deliver on their Promises?

Do Programming Language Features Deliver on their Promises?

#LambdaConf2025 took place in Estes Park Colorado this past May 12th and 13th. Learn about the sponsors that made it happen: Ziverge Transformative Tech for Modern Challenges https://www.ziverge.com/ Urbit Foundation Leave the Internet Behind http...View

/

Designing your Data: The Bread & Butter of APL Performance

Designing your Data: The Bread & Butter of APL Performance

Iverson style array programming has a reputation for high density, high performance, and concise programs on a wide range of domains. However, programmers unfamiliar with array programming may struggle to see how to apply array programming to their p...View

/

Tacit Talk Episode 27: Tersity

Tacit Talk Episode 27: Tersity

In this episode of Tacit Talk, Conor brings on two guests: Links: GitHub Discussion of ADSP Episode 197 Algorithms & Tersity with ADSP Episode 197 Algorithms & Tersity with Co-dfns: https://github.com/Co-dfns/Co-dfns Conway's Law: https://en.wikipedi...View

/

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