As far as I can tell pattern matching was first proposed as a language feature by Burstall (1969). However, it was a proposal for a feature in the language ISWIM, which itself never had a completed implementation.

F. V. McBride’s Ph.D. dissertation (1970) presented an implementation of a pattern matcher based on a modification of the Lisp 1.5 metacircular interpreter.

Are there any earlier implementations of pattern matching as a programming language feature than this?

(Note I am not interested in pattern matching in the sense of regular expressions on strings, whose history is basically well known.)

  • $\begingroup$ This is definitely a programming language design question, and history questions are on-topic here. That said, if it was definitely first proposed in 1969, then even if an implementation in 1970 isn't the first one, other implementations can't have beaten it by much. $\endgroup$
    – kaya3
    Nov 7, 2023 at 18:57
  • $\begingroup$ It’s possible I’m wrong that Burstall’s paper was the first proposal. I’d be equally interested in documentation earlier than 1969. $\endgroup$ Nov 7, 2023 at 20:49

1 Answer 1


The SNOBOL series of languages were developed between 1962 and 1967. Pattern matching is one of its basic operations, and patterns are a first-class data type.

There were other string-processing languages COMIT and TRAC developed in the 1950's, but from what I can find they didn't have pattern matching.

  • 3
    $\begingroup$ I feel like SNOBOL pattern matching fits more under the "regular expressions on strings" bucket (even though they're not regular expressions) than the sense of the pattern matching used in the examples in the question. It's sufficiently complex that I'm not certain it's ruled out, though. $\endgroup$
    – Michael Homer
    Nov 7, 2023 at 22:54
  • $\begingroup$ I haven't read the references he linked to. Is this more like the structural pattern matching in Scheme macros, or Python's match/case statements? $\endgroup$
    – Barmar
    Nov 8, 2023 at 16:39
  • $\begingroup$ Indeed, SNOBOL pattern matching is an interesting precedent (especially since it goes beyond regular expressions to context-free grammars, something I don’t think was tried again at that scale until Perl 6/Raku) but I’m looking for pattern matching over arbitrary values or at least values which have some structure inherent to them, not just strings. $\endgroup$ Nov 8, 2023 at 21:05

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .