SASL Programming Language: An Exploration of its Origins, Development, and Impact
The world of programming languages is vast, with numerous languages emerging over the decades to address different computational needs. Among these languages, SASL (St Andrews Static Language, alternatively St Andrews Standard Language) stands as a fascinating example of early functional programming evolution. Developed by David Turner at the University of St Andrews in 1972, SASL represents a foundational piece in the history of functional programming. Despite being less well-known today, SASL played a crucial role in the development of later programming languages and has influenced the evolution of languages that came after it, including KRC and Miranda.

Origins of SASL: A Step into Functional Programming
In the early 1970s, the landscape of programming was dominated by procedural languages, but the rise of functional programming was beginning to take shape. Functional programming, a paradigm that treats computation as the evaluation of mathematical functions and avoids changing state or mutable data, was gaining traction with languages like LISP. However, functional programming was not universally accepted at the time, and many researchers were exploring different ways to formalize and implement functional programming concepts.
David Turner, an academic at the University of St Andrews, was one such researcher. In 1972, he developed SASL, a purely functional programming language that was based on the applicative subset of ISWIM. ISWIM (If Symbolic Were Interpreted More) was itself an experimental language that aimed to explore the combination of lambda calculus and mathematical logic for computation. Turner’s goal with SASL was to create a language that would serve as both a practical tool for computation and a theoretical model for exploring functional programming principles.
SASL’s design was simple but effective. It featured an applicative form of expression evaluation, where function calls were central to how programs executed. The lack of side effects and the focus on immutability were key features of SASL, marking it as one of the early examples of functional programming languages that emphasized pure functions and the avoidance of state.
From Static to Lazy Evaluation: The Redesign of SASL
In 1976, Turner made significant changes to SASL that would go on to define its later influence. He redesigned the language, introducing non-strict (or lazy) evaluation. This was a pivotal development, as lazy evaluation allows a program to defer the evaluation of expressions until their values are actually needed. Lazy evaluation contrasts with eager evaluation, the more traditional method, where all expressions are evaluated as soon as they are encountered in the program.
The introduction of lazy evaluation in SASL allowed for more efficient computation, particularly when dealing with infinite data structures or computations that could be deferred. This feature made SASL more flexible and powerful, aligning it with some of the key ideas that would later shape languages like Haskell. The ability to manage resource usage more effectively by postponing computation was a significant advancement and highlighted Turner’s deep understanding of computational theory.
The shift to lazy evaluation did not alter SASL’s fundamental nature as a purely functional language. It still adhered to the principles of immutability and purity, but the lazy evaluation mechanism allowed developers to write programs that could more efficiently handle large data sets and complex recursive computations without needing to evaluate every part of a program immediately.
Influence on Later Languages
Though SASL itself did not gain widespread adoption, its design had a profound influence on subsequent programming languages. The most notable descendants of SASL are KRC and Miranda, both of which were developed by Turner himself. These languages carried forward many of the core concepts found in SASL, including the emphasis on lazy evaluation and functional purity.
KRC, or the Kestrel Research Compiler, was one of the first implementations of a lazy functional language. It incorporated many ideas from SASL but also introduced new features that aimed to improve the language’s practical usability and efficiency. Miranda, on the other hand, became one of the most influential early functional programming languages and is often cited as a precursor to Haskell, a widely used modern functional language.
Miranda extended SASL’s legacy by introducing polymorphic types, which allowed for more flexible and reusable code. This was a significant enhancement over SASL’s untyped nature. The presence of polymorphic types in Miranda made it more expressive and applicable to a wider range of programming tasks, contributing to its adoption and subsequent influence on the design of Haskell and other modern functional languages.
While SASL did not evolve into a mainstream programming language, its contributions to the development of functional programming cannot be overstated. It laid the groundwork for important programming concepts that would later be refined and adopted by the broader programming community.
Theoretical Contributions of SASL
Beyond its technical contributions, SASL also had a significant impact on the theoretical understanding of programming languages. It was designed with a clear intention to explore and formalize functional programming principles. The language’s strict adherence to purity, immutability, and lazy evaluation made it an ideal vehicle for studying the theoretical aspects of computation.
SASL was closely tied to the academic research that was taking place during the 1970s and 1980s. Researchers and students at the University of St Andrews used SASL to explore concepts in programming language design, functional programming, and computational theory. The language’s simple yet powerful design made it an excellent tool for experimenting with different ideas in the theory of computation, including the application of lambda calculus and the development of new algorithms and data structures.
Furthermore, SASL contributed to the development of type theory and the study of type systems, even though the language itself was not typed. The lack of a formal type system in SASL highlighted the challenges and limitations of untyped languages, which led to further research into the benefits of adding types to functional languages. This research was pivotal in the development of languages like Miranda and Haskell, which introduced type systems that would become standard in modern functional programming.
SASL and the Burroughs Corporation
One of the more unusual and historically significant aspects of SASL is its use by the Burroughs Corporation. In the 1970s, Burroughs was a major player in the computer industry, known for its innovative hardware and software solutions. The company used SASL to write a compiler and operating system, marking one of the first real-world applications of a functional programming language in commercial software development.
This use of SASL by Burroughs is a testament to the practical potential of functional programming languages, even in the early stages of their development. While functional programming was still seen as a niche area of study at the time, the adoption of SASL in industry demonstrated its viability for solving complex computational problems. The use of SASL in commercial software projects also contributed to the language’s reputation as a serious tool for computer science research and development.
Legacy and the State of SASL Today
Despite its early influence and important role in the development of functional programming, SASL is largely forgotten in the broader programming community today. It has not been widely used in industry, and its implementation is no longer maintained or developed. However, its legacy lives on through the languages that followed in its footsteps, particularly Miranda and Haskell.
Today, functional programming languages are widely used in a variety of domains, from academic research to industry applications, and many of the concepts pioneered by SASL continue to shape the landscape of programming. The emphasis on immutability, lazy evaluation, and functional purity that SASL embodied are now central to many modern languages.
While SASL itself may be a historical curiosity, its impact on the evolution of functional programming is undeniable. The language’s design was ahead of its time, and it laid the foundation for a range of programming languages that would go on to become staples of the programming community. Whether through its influence on languages like Haskell or its role in shaping the theoretical understanding of programming, SASL’s contributions continue to resonate today.
In conclusion, SASL is a seminal language in the history of functional programming, representing an early but critical step in the development of the functional paradigm. Its design, featuring pure functions and lazy evaluation, influenced many subsequent languages, contributing to the growth and success of functional programming. Though SASL may not have had the same commercial success as some of its successors, its theoretical and practical contributions remain a lasting legacy in the field of computer science.
For more detailed information about SASL, you can refer to its Wikipedia page here.