1. 23
  1. 4

    But mathematicians had no formal notation for describing conditions when recursion terminates.

    This is not true - mathematicians have long had ways of describing discontinuous functions which are what this is. https://en.wikipedia.org/wiki/Piecewise

    1. 2

      Not really continuity is an analytic notion that doesn’t have much to do with piecewise notation. Sure you can define discontinuous functions with it, but the main example given there (the definition of abs) is a continuous function (but nondifferentiable at x=0). Furthermore he seems to be talking about halting conditions actually, and saying that mathematicians had no formal ‘notation’ for it seems misguided, in the context of lambda calculus, unless I’m misinterpreting something. If we’re talking about recursions in a non-CS context, then yeah, they’re sequences which are by definition non-terminating. But I do agree that is seems wrong to say that McCarthy ‘invented’ definition cases.

      1. 1

        From “Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part 1”:

        Most of the ideas are well known, but the notion of conditional expression is believed to be new, and the use of conditional expressions per- mits functions to be defined recursively in a new and convenient way.


        The dependence of truth values on the values of quantities of other kinds is expressed in mathematics by predicates, and the dependence of truth values on other truth values by logical connectives. How- ever, the notations for expressing symbolically the dependence of quantities of other kinds on truth values is inadequate, so that English words and phrases are generally used for expressing these dependences in texts that describe other dependences symbolically. For example, the function |x| is usually defined in words. Conditional expressions are a device for expressing the dependence of quantities on propositional quantities.

        I’d be interested to know if McCarthy was wrong. I think that mathematicians used ad-hoc ways of conveying the idea but there was no agreed on formalism. A piecewise function is, as I understand it, just the idea that one function can be defined as a set of one or more equations, depending on the input. Piecewise is not a formalism.

        1. 3

          It’s not like most math is actually formal in some absolute sense, there are many other examples where common concepts are utilized through natural language.

          But I believe the formalism behind piecewise definitions is just function composition. It’s easy to see when the domain and the codomain are the same set (define equations f_k on partitions, compose with identity on the complement of the partition, then chain compose them all), it takes a few more steps to construct when they’re not.

      2. 3

        This article entirely ignores M-expressions and Steve Russell’s contributions. The relationship between the AI researcher John McCarthy and a painter is tenuous at best, as presented. It’s interesting to read what is supposed to be an article concerning itself with Lisp that goes on a tangent to talk about the evil KKK for no good reason.

        In brief, I didn’t care for it. I find this to be drivel.

        1. 2

          I think in Go too. It’s been useful as heck to make reasoning about programs easier, not to mention visualizing how the data flows between parts of it. I apparently know Go’s grammar well enough that my dreams have working compilers.

          1. 1

            I enjoyed the article. But I still don’t like DSLs. Perhaps it’s because I’ve always had to hack into them and embed myself in someone else “world”. While that in itself can be an interesting experience, it also causes a lot of cognitive overhead, to exist and swap between multiple “worlds”.