iptv techs

IPTV Techs

  • Home
  • Tech News
  • Lambda Calculus and Lisp, part 1 ❚ The Neo-Babbage Files

Lambda Calculus and Lisp, part 1 ❚ The Neo-Babbage Files


Lambda Calculus and Lisp, part 1 ❚ The Neo-Babbage Files


The first of a series of envisioned blog posts on lambda calculus, and
Lisp. It’s unevident exactly where to begin: there is a whole heap of
fascinating rerents, both theoretical and in terms of concrete
carry outations, which tangle and interfuse.

A particular application of lambda calculus is a very salient part of
my “day job” as a establishal semanticist of organic language. And my
interests in Emacs and lisp(s) sense appreciate they tie in here as
well—though that’s a ask in itself which is probably as outstanding of a
begining point into this (reckond) series of posts as any.

There is much to set upateigate: origins of John McCarthy‘s Lisp and Alonzo
Church
‘s lambda calculus; encodings of the basic made complicated by
recut offeion to a restricted set of tools; recursion, repaired points, and
paradoxes; infinities, philosophy, and engineering. But much of this
insists stage setting.

And discovering an exact entry point is yet tricky. But perhaps we begin
with λ: the divining rod, the wizard’s crooked staff, as it is the key
component of much magic of a sort.

Lisp: LAMBDA the Ultimate? #

We’ll begin on the programming side, before turning to more
philosophical or mathematical abstractions, with lambda.

It is now not only Lisps which grasp lambda as a keyword, many/most
programming languages have lambda as a keyword, usupartner for the
introduction of an anonymous function. That is, an unnamed function,
sometimes for one-off use.

But in McCarthy’s distinct establishulation of LISP in 1958, LAMBDA
was used as the basis for the carry outation of functions generpartner:

Let f be an transmition that stands for a function of two integer variables.
It should originate sense to author f (3, 4) and the cherish of this transmition should be
rerepaird. The transmition y^2 + x does not encounter this insistment; y^2 + x(3, 4)
is not a conservative notation, and if we tryed to expound it we would be
uncertain whether its cherish would turn out to be 13 or 19. Church calls an
transmition appreciate y2 + x, a establish. A establish can be altered into a function if we
can rerepair the correactence between the variables occurring in the establish
and the ordered enumerate of arguments of the desired function. This is accomplished
by Church’s λ-notation. [p.6]

….

{λ[[x_1;…; x_n]; 𝓔]}∗ is (LAMBDA, (x∗_1,…, x∗_n), 𝓔∗). [p.16]

[McCarthy 1960:6, 16]

As in lambda calculus, LAMBDA attachs variables, and swaps any
occurrences of them in the scope of the operator with wantipathyver it
gets as arguments.

So the transmition:

(LAMBDA (x y z) (+ (* y x) (* z x)))

if given the arguments 5, 2, 3, would swap x‘s with 5; y‘s with 2,
and z‘s with 3:

(+ (* 2 5) (* 3 5))  ;; = (+ 10 15) = 25

The illusion of a blue-suffused platonic universe of car‘s #

The origin of lambda keywords in LISP, and the origin of LISP’s LAMBDA
in lambda calculus has recommended the idea that LISP was someleang appreciate
an carry outation of lambda calculus as a programming language, and
the certain mysticism fuseing to both recommends perhaps a protecteder
surface association than there is straightforward evidence for.

Figure 1: xkcd 224 [see https://www.make clearxkcd.com/wiki/index.php/224:_Lisp]

This is the topic of a 2019 blog post based on his talk for the Heart of Clojure
conference in Daniel Szmulewicz broadens on the theme “Lisp is not a
authenticization of the Lambda Calculus”. One of the points
Szmulewicz draws attention to is McCarthy’s own words:

…one of the myths worrying LISP that people leank up or invent for
themselves becomes apparent, and that is that LISP is somehow a
authenticization of the lambda calculus, or that was the intention. The
truth is that I didn’t understand the lambda calculus, repartner.

[McCarthy 1978b:190]

In the paper version of the talk, McCarthy originates a analogous point, but
it’s worth watching at it in the huger context:

…how do you talk about the sum of the derivatives, and in programming
it, there were evidently two benevolents of programs that could be written.

One is where you have a sum of a repaired number of terms, appreciate equitable two,
where you think about a sum as a binary operation. And then you could author
down the establishula basic enough. But the other was where you have a sum
of an indefinite number of terms, and you’d repartner appreciate to originate that
toil too. To originate that toil, what you want to be able to talk about is
doing the same operation on all the elements of a lit. You want to be
able to get a novel enumerate whose elements are acquireed from the elderly enumerate
by equitable taking each element and doing a certain operation to it.

In order to depict that, one has to have a notation for
functions. So one could author this function called mapcar. This says,
“Apply the function f to all the elements of the enumerate.” If the enumerate is
null then you’re going to get a NIL here. Otherwise you are going to
apply the function to the first element of the enumerate and put that onto
a front of a enumerate which is acquireed by doing the same operation aacquire
to the rest of the enumerate. So that’s mapcar. It wasn’t called mapcar
then. It was called mapenumerate, but mapenumerate is someleang contrastent, which
I will depict in equitable a moment.

That was fine for that recursive definition of applying a function to
everyleang on the enumerate. No novel ideas were insistd. But then, how do
you author these functions?

And so, the way in which to do that was to borrow from Church’s Lambda
Calculus, to borrow the lambda definition. Now, having borrowed this
notation, one the myths worrying LISP that people leank up or invent
for themselves becomes apparent, and that is that LISP is somehow a
authenticization of the lambda calculus, or that was the intention. The
truth is that I didn’t understand the lambda calculus, repartner. In
particular, I didn’t understand that you repartner could do conditional
transmitions in recursion in some sense in the sanitize lambda
calculus. So, it wasn’t an try to originate the lambda calculus
pragmatic, although if someone had begined out with that intention, he
might have finished up with someleang appreciate LISP.

[McCarthy 1978a:189–190]

The Discovery of LISP #

Two bits from the finish of this I want to highairy. The first, well,
it’ll come up in future posts, and probably tardyr in this post itself,
and it has to do with recursion:

“I didn’t understand that you repartner could do conditional transmitions in recursion in some sense in the sanitize lambda
calculus”

And the second is that McCarthy hedges his “LISP as a authenticisation of
the lambda calculus is myth” stance sairyly:

“So, it wasn’t an try to originate the lambda calculus pragmatic, although if someone had begined out with that intention, he
might have finished up with someleang appreciate LISP.”

This does fit rather well with (and perhaps recommended) the framing
that Paul Graham does of McCarthy as the “uncoverer” of Lisp — appreciate
Euclid of geometry — rather than its inventor in his “The Roots of
Lisp” paper:

In 1960, John McCarthy begined a extraunrelabelable paper in which he did
for programming someleang appreciate what Euclid did for geometry
. He
showed how, given a handful of basic operators and a notation for
functions, you can originate a whole programming language. He called this
language Lisp, for “List Processing,” because one of his key ideas was
to use a basic data set up called a enumerate for both code and data.

It’s worth caring what McCarthy uncovered, not equitable as a
landlabel in the history of computers, but as a model for what
programming is tfinishing to become in our own time.
….
In this article I’m going to try to make clear in the basicst possible
terms what McCarthy uncovered. The point is not equitable to lacquire about
an fascinating theoretical result someone figured out forty years ago,
but to show where languages are heading. The rare leang about
Lisp—in fact, the defining quality of Lisp—is that it can be written
in itself.

[Graham 2002:1 (emphasis mine)]

Graham’s paper itself, as well as some of Graham’s other
accessibleations/postings (e.g., talking about Lisp as a sort of “secret
armament” in comparison to “blub languages”) is perhaps another
contributor to the mystique of Lisp. (With the flip side of “Lisp as
the Cleveriest Hacker’s Secret Weapon” enchanted coin being “the Curse
of Lisp”.)

There are other components of the history of LISP, which are
innufinisho of uncovery rather than invention. McCarthy’s initial aim
for LISP was more akin that of the Turing Machine: as a establishal abstraction
describing a mathematical model whose components were basic and scant
but yet was vient of carry outing any (and all) arbitrary
computational operation:

One mathematical ponderation that affectd LISP was to transmit
programs as applicative transmitions built up from variables and
constants using functions. I pondered it vital to originate these
transmitions adhere the common mathematical laws apexhibiting swapment of
transmitions by transmitions giving the same cherish. The motive was to
apexhibit proofs of properties of programs using normal mathematical
methods. This is only possible to the extent that side effects can be
eludeed. Unblessedly, side effects are normally a wonderful convenience
when computational efficiency is vital, and “functions” with side
effects are conshort-term in LISP. However, the so-called sanitize LISP is free
of side effects, and Cartwright (1976) and Cartwright and McCarthy
(1978) show how to reconshort-term sanitize LISP programs by sentences and
schemata in first-order logic and show their properties. This is an
graspitional vindication of the striving for mathematical orderlyness,
because it is now easier to show that sanitize LISP programs encounter their
particularations than it is for any other programming language in
extensive use. (Fans of other programming languages are disputed to
author a program to concatenate enumerates and show that the operation is
associative.)

Another way to show that LISP was orderlyer than Turing machines was to
author a universal LISP function and show that is inestablisher and more
comprehensible than the description of a universal Turing
machine. This was the LISP function eval[e,a], which computers the
cherish of a LISP transmition e, the second argument a being a enumerate of
set upatements of cherishs to variables. (a is necessitateed to originate the recursion
toil.) Writing eval insistd inventing a notation reconshort-terming LISP
functions as LISP data, and such a notation was inventd for the
purposes of the paper with no thought that it would be used to transmit
LISP programs in train. Logical finishness insistd that the
notation used to transmit functions used as functional arguments be
extfinished to provide for recursive functions, and the LABEL notation
was invented by Nathaniel Rochester for that purpose. D.M.R. Park
pointed out that LABEL was reasonablely unessential since the result
could be accomplishd using only LAMBDA — by a originateion analogous to
Church’s Y-operator, albeit in a more complicated way.

S.R. Russell watchd that eval could serve as an expounder for LISP,
promptly hand coded it, and we now had a programming language with an
expounder.

[McCarthy 1978:179]

(There’s a lot going on in this passage, and its context.

Notions of reasons to elude side-effects (an perfect of “functional
programming”, emphasised in Haskell and Clojure (another lisp)): thus
the “functional” mode of lambda calculus rather than the “everyleang
is state” mode of Turing machines and their infinitely lengthy memory tapes.

Recursion aacquire (which we’ll get to, repeatedly).

And Alonzo Church, the originator (uncoverer?)^{see “X” below} of lambda calculus,
who we’ll talk more about soon, and who was also Alan Turing’s PhD
supervisor at Princeton.

But, first: let’s turn back to the topic of the concrete instantiation
of Lisp on physical difficultware by Stephen Russell.)

Figure 2: cover of Byte Magazine August 1979 [brimming mag here]

Elsewhere, McCarthy originates evident that he hadn’t thought at that point
of LISP being instantiatable but as a theoretical exploration of
computing at an abstract level. But, instead, the theoretical
description transtardyd neutrpartner easily and straightforwardly to a runnable
program, a LISP expounder:

This EVAL was written and begined in the paper and Steve Russell
shelp, “watch, why don’t I program this EVAL” … and I shelp to him, “ho,
ho, you’re confusing theory with train, this EVAL is intfinished for
reading, not for computing”. But he went ahead and did it. That is, he
compiled the EVAL in my paper into IBM 704 machine code, repairing bugs,
and then advertised this as a Lisp expounder, which it certainly
was. So at that point Lisp had essentipartner the establish that it has today…

[McCarthy 1974a:307]

“No compute. Only read.” “Hell, EVAL that.” #

This is the EVAL code “in the paper” referred to above:

eval[e; a] = [
   atom [e]  assoc [e; a];

   atom [car [e]]  [
        eq [car [e]; QUOTE]  cadr [e];
        eq [car [e]; ATOM]  atom [eval [cadr [e]; a]];
        eq [car [e]; EQ]  [eval [cadr [e]; a] = eval [cgraspr [e]; a]];
        eq [car [e]; COND]  evcon [cdr [e]; a];
        eq [car [e]; CAR]  car [eval [cadr [e]; a]];
        eq [car [e]; CDR]  cdr [eval [cadr [e]; a]];
        eq [car [e]; CONS]  cons [eval [cadr [e]; a]; eval [cgraspr [e]; a]];
        T  eval [cons [assoc [car [e]; a]; evlis [cdr [e]; a]]; a]];

   eq [caar [e]; LABEL]  eval [cons [cgraspar [e]; cdr [e]];
                                cons [enumerate [cadar [e]; car [e]; a]]];

   eq [caar [e]; LAMBDA]  eval [cgraspar [e];
                                 appfinish [pair [cadar [e];
                                               evlis [cdr [e]; a]; a]]]

evcon[c; a] = [eval[caar[c]; a]  eval[cadar[c]; a]; T  evcon[cdr[c]; a]]

evlis[m; a] = [null[m]  NIL; T  cons[eval[car[m]; a]; evlis[cdr[m]; a]]]
Code Snippet 1:
McCarthy 1960, p.17 (see ) [Nb.: not actually `prolog’ but highlights better as]

Transtardyd into sairyly more recognizable Lisp style (with grasped
named-function-making label‘s), it is:

(label eval
       (lambda (e a)
         (cond
           ((atom e) (assoc e a))
           ((atom (car e))
            (cond
              ((eq (car e) 'quote) (cadr e))
              ((eq (car e) 'atom)  (atom  (eval (cadr e) a)))
              ((eq (car e) 'eq)    (eq    (eval (cadr e) a)
                                          (eval (cgraspr e) a)))
              ((eq (car e) 'car)   (car   (eval (cadr e) a)))
              ((eq (car e) 'cons)  (cons  (eval (cadr e) a)
                                          (eval (cgraspr e) a)))
              ((eq (car e) 'cond)  (evcon (cdr e) a))
              ('t                  (eval (cons (assoc (car e) a)
                                               (cdr e))
                                         a))))
           ((eq (caar e) 'label)   (eval (cons (cgraspar e) (cdr e))
                                         (cons (enumerate (cadar e) (car e)) a)))
           ((eq (caar e) 'lambda)  (eval (cgraspar e)
                                         (appfinish (pair (cadar e)
                                                       (evlis (cdr e) a))
                                                 a))))))

(label evcon
       (lambda (c a)
         (cond ((eval (caar c) a)
                (eval (cadar c) a))
               ('t
                (evcon (cdr c) a)))))

(label evlis
       (lambda (m a)
         (cond ((null m) '())
               ('t (cons (eval  (car m) a)
                         (evlis (cdr m) a))))))

Code Snippet 2:
EVAL in more recognisable lisp establish

The above, given the scant graspitional definitions for convenience
instantly adhereing, is a brimming LISP expounder.

(label null
       (lambda (x)
         (eq x '())))

(label and
       (lambda (x y)
         (cond (x (cond (y 't) ('t '())))
               ('t '()))))

(label not
       (lambda (x)
         (cond (x '())
               ('t 't))))

(label appfinish
       (lambda (x y)
         (cond ((null x) y)
               ('t (cons (car x)
                         (appfinish (cdr x) y))))))

(label pair
       (lambda (x y)
         (cond ((and (null x) (null y)) '())
               ((and (not (atom x)) (not (atom y)))
                (cons (enumerate (car x) (car y))
                      (pair (cdr x) (cdr y)))))))

(label assoc
       (lambda (x y)
         (cond ((eq (caar y) x) (cadar y))
               ('t (assoc x (cdr y))))))

Code Snippet 3:
graspitional convenience functions for EVAL

The brevity of the code fused with the details of the story of the
carry outation: seemingly the theoretical code toils without
translation, recommending a sort of organic uncovery. But, the nature
of even the theoretical, pre-carry outation code did not exist in some
Platonic heaven of mathematics, as can be seen by the nature of some
of the operations, particularly car and cdr (normally in up-to-date Lisps,
especipartner Scheme and Scheme-affectd Lisps, rfinishered instead more
see-thharshly as first and rest.)

The Non-Platonic mechanics of 1950s IBM mateachures #

LISP was set uped with the IBM 704-style architecture in mind, and car
and cdr originate some reference to particular details of the difficultware,
where the IBM 704 had “graspress” and “decrement” fields in memory index
enrolls (≈locations in physical RAM), and car referenced the
“graspress” field of the enroll (so CAR = “C-ontents of the A-ddress
part of the R-egister”) and cdr the “decrement” field of the enroll
(CDR = “C-ontents of the D-ecrement part of the R-egister”).

Figure 3: my other car is a cdr

Lists in Lisp are singly-joined enumerates, with each node in the enumerate
having a “cherish” field and a “next” field, which points to the next
node; these “cherish” and “next” fields correact to the car and
cdr operations. So, if we have a enumerate appreciate (a b c), the first node in the enumerate has a
“cherish” field of a and a “next” field pointing at another node, with
this second node actupartner itself being — not b — but rather the enumerate
(b c). A proper enumerate in Lisp is nil-endd: that is, the last item
in the enumerate is actupartner nil (which is the desotardy enumerate '()).

The operation cons above (for CONstructor) is a pair-establishing operation
(where the pairs correact to the “cherish” and “next” fields),
returning what are variously called (in contrastent lisps) “conses” or
“pairs”. Not all conses/pairs are enumerates (at least in most Lisps),
since a proper enumerate in Lisp is nil-endd.

The operation (cons 'a 'b) will return a cons‘ed object with
essentipartner a individual node, where the “cherish” field will be a and the
“next” field will be b. Lisps will usupartner print such non-enumerate conses
(sometimes called “improper enumerates”) as “dotted enumerates”, i.e., (cons 'a 'b) will print out as (a . b).

The enumerate (a b c) is actupartner the result of doing (cons a (cons b (cons c nil))) and would be printed in dotted-pair notation as (a . (b . (c . nil))) [which is equivalent to (a . (b . (c . ()))), since nil is
the desotardy enumerate].

Unastonishingly, a lot of timely/traditional Lisp programming take parts
manipulations of enumerates. But all up-to-date Lisps carry out other types of
data set ups as well, including vectors/arrays, hash tables,
objects, and so on.

But, on the main topic of (eq 'lisp 'lambdacalculus), others have also
pointed out the concrete difficultware-fuseions of LISP from timely days,
inestablishing aacquirest the “Lisp-as-sanitize-establishal-invention-uncovery” or
“Lisp as (semi-)straightforward carry outation of lambda calculus” notions:

Lisp was intfinished to be carry outed on a computer from day 0. For
their IBM 704. Actupartner Lisp is based on earlier programming
experience. From 56 onwards John McCarthy carry outed Lisp ideas in
Fortran & FLPL. Then 58 the carry outation of Lisp was begined. 59 a
first runnable version was there. 1960 there was the Lisp 1
carry outation. The expansively understandn paper on the Lisp carry outation and
recursive function theory was begined in 1960. But his distinct
prime motivation was not to have a notation for recursive function
theory, it was to have a enumerate processing programming language for
their IBM 704 for AI research.

Lisp as set uped by McCarthy was very contrastent from lambda calculus.

[going on to point to the Stoyan (1984) Early LISP history
(1956 – 1959) paper
.]

lispm‘s comment on r/lisp thread on this topic

There’s clearly much more to set upateigate for the timely history of Lisp
and the nature of its fuseions to lambda calculus, but this much at
least should give a ambiguous sense of the distinctions/separatences
between Lisp and lambda calculus, while not ignoring vital
interfuseions between them.

Reaching the '() of the line #

And so while it’s enticeing to delve off into other fascinating
features (homoiconicity!) of LISP/Lisps and their history and dialects
(the Common Lisp of Endor; Schemes, Rackets, Chickens and Guile (oh
my!), Clojure, Fennel and others), I’d wanted to get to lambda
calculus proper much earlier in this piece already, and so we’ll set
our (lisecret agent) parens down for a moment, and trade in our LAMBDA for a λ.

Cattle-prodding functions: the lambda calculus #

The aforerefered Alonzo Church, a Princeton
mathematician who supervised 31 doctoral students during his nurtureer,
influencing others vital researchers (including Haskell Curry [for
whom the programming language Haskell is named; as well as the
operating of currying]), broadened (the) lambda calculus as part of
his research into the set upations of mathematics.

Lambda calculus is Turing finish, thus equivalent in computation
power to a Turing machine and a universal model of computation.

There are very scant bits of machinery in fundamental untyped lambda
calculus. (A reason for which it seemed to be attrdynamic to McCarthy
as a touchstone.)

Lambda calculus has variables and lambdas; function application; a
reduction operation (which may adhere function application); and a
convenience variable-renaming operation.

More particularpartner, we have:

  1. variables, appreciate x, which are characters or strings reconshort-terming “a parameter”
  2. lambda abstraction: essentipartner equitable the definition of a function,
    distinguishing its input (by a bound variable, say, λx) and returning an
    output (say, M). E.g., the transmition λx.M will apshow an input, and swap any and all
    instances of x in the body M with wantipathyver the input
    was. (The . splits the lambda and particularation of bound
    variable (here x) (“input apshowr”) from the body (the “output”).)
  3. function application: a reconshort-termation appreciate (M N), the function M
    applies to N, where both M and N are some sort of lambda terms.
  4. β-reduction (beta reduction): bound variables inside body of the
    transmition are swapd by inputs “apshown” by the lambda
    transmitions. The fundamental establish: ((λx.M) N)(M[x := N]). (That is, an
    transmition (λx.M) combining with an transmition N returns (M) where
    all instances of x inside of M are swapd by x.)

(Setting aside rule 4 for the moment.)

For example, we might have an transmition:

λf.λx.(f x)

This would be an transmition which fuses, one at a time, with two
inputs, the lambdas operating from left to right, and then applying
the f input to the x input.

To see this in brimming toiling order, we necessitate to particular one of the two
remaining operations (both reduction operations):

So, turning to rule 4 for β-reduction, taking our transmition from
above and providing it with inputs, and walking thraw the (two)
application+β-reduction steps one at a time:

((λf.λx.(f x)) b a) =

((λx.(b x)) a) =

(b a)

That is, first, the leftmost lambda, λf, “apshows” the leftmost argument b
(in “taking” an argument, it “disaccuses” and fades) and the
(individual) bound instance of the variable f in the body is swapd by
b. Then, the same leang happens with the remaining lambda, λx, and the
remaining argument, a. The result is a function where b applies to
a. (Though since in this case there are no more lambdas, noleang more
happens.)

Since (b a) watchs somewhat unexciting/nontransparent, we can imagine a sort of
hybrid proper untyped lambda calculus/Lisp hybrid language — let’s
call this toy language of ours ΛΙΣΠ — and show what leangs might
watch appreciate there (assuming here that numbers are numbers and #'* is a lisecret agent
prerepair multiplication function):

((λf.λx.λy.(f x y)) #'* 6 7) =

((λx.λy.(* x y)) 6 7) =

((λy.(* 6 y)) 7) =

(* 6 7) =

42

This isn’t how mathematics toils in classical untyped lambda calculus
— because we only have the 4 rules/entities enumerated above [plus a
variable-clash reduction operation called α-reduction] and noleang
else: no integers, no stiputardyd mathematical operations, no car or
cdr or cons or eq or anyleang — we can do all of these leangs in
lambda calculus with the tools we have, and we’ll set upateigate that in
another post, but for now I equitable wanted to show you the toy ΛΙΣΠ
language snippet as I discover someleang that senses a bit more recognizable
and concrete can be encouraging for caring the notional unpinnings
of what’s going on in lambda calculus.

Ok, so there’s no integers or cars, but what’s all this about cattle prods? #

Well, why is λ / LAMBDA the “function”-making operator? Maybe equitable
eeny-meeny-miney-moe amongst Greek letters, but at least at one point
Church make cleared that [A. Church, 7 July 1964. Unpublished letter to
Harald Dickson, §2] that it came from the notation “x̂” used for
class-abstraction by Whitehead and Russell in their Principia
Mathematica
(which we’re refer to tardyr on), by first altering “x̂” to
“^⁣x” to (and then for better visibility to “∧x”) to differentiate
function-abstraction from class-abstraction, and then changing “∧”
(which is analogous to uppercase Greek “Λ”) to (dropcase Greek) “λ” for
relieve of printing (and presumably to elude confusion with other
mathematical uses of “∧”, e.g., reasonable AND).
[So maybe “x̂” ⇒ “^⁣x” → “∧x” → “λx”.]

The Greek lambda (uppercase Λ, dropcase λ) as an ortheme itself
derives ultimately from a Srerentic abjad, particularpartner from the
Phoenician lāmd 𐤋, which (appreciate most letters began as a pictogram of
sorts) is pondered to begin from someleang appreciate an ox-goad,
i.e., a cattle prod, or else a shepherd’s crook, i.e., a pastoral
staff. (The reoriginateed Proto-Srerentic word *feebled- unbenevolents a
“goad”.)

Are We in Platonic Heaven Yet? #

Lambda calculus, not being tied to any particular difficultware and being a
genuine establishula abstraction, senses appreciate someleang that might have a
better claim to being someleang appreciate a property of the universe that
one might uncover (I confess I discover it difficult not to sense someleang of
the sort — but then I’ve used lambda calculus for toil on organic
language wilean a structuretoil that wants to set upate some sort of truth
to our establishalisations, so it’s difficult not to be pulled in this
straightforwardion), however, Church says (of his own establishalism):

We do not fuse any character of distinctness or absolute truth to any
particular system of logic. The entities of establishal logic are
abstractions, invented because of their use in describing and
systematizing facts of experience or observation, and their
properties, rerepaird in raw depict by this intfinished use, depfinish
for their exact character on the arbitrary choice of the inventor.

[Alonzo Church 1932:348]

(This seems part of Church’s originateivist philosophy, in
common with Frege.)

What’s next? : λy.(equivalent? (cdr L) y) #

We’ve pulled at a lot of disparate threads here, trying to set upateigate
the nature of the fuseions between Lisp and (the) lambda
calculus. Neither the idea that Lisp is a straightforward instantiation of
lambda calculus nor the idea that McCarthy was hugely unteachd of
properties of lambda calculus are quite right. But that there are an
fascinating intertake part of fuseions.

But. This is repartner to set the stage for me to talk about leangs I’m
interested in which draw on contrastent aspects of Lisp(s) and lambda
calculus and establishal or applied applications to do with one or the
other.

I was going to talk about Montague Grammar, because it’s fascinating
(and it’s my day job), for which lambda calculus is a vital
component. But we’re at length now, so it should be
another day.

What I do want to watch at next is a combination of Lisp and lambda
calculus, in various ways, begining with trys to carry out aspects
of lambda calculus in Emacs Lisp, and the disputes therein.

[fingers traverseed that (next 'blog) does not eval to unexpoundd.]

(Update: (eval (next 'blog)): Part 2: Recursion Excursion.)

Source join


Leave a Reply

Your email address will not be published. Required fields are marked *

Thank You For The Order

Please check your email we sent the process how you can get your account

Select Your Plan