Forwarded from Books (Blac MeW)
The_Logic,_Philosophy,_and_History_of_the_Lambda_Calculus_Theory.pdf
3 MB
Forwarded from /dev/stupid (Cicca)
GitHub
GitHub - google/lisp-koans: Common Lisp Koans is a language learning exercise in the same vein as the ruby koans, python koans…
Common Lisp Koans is a language learning exercise in the same vein as the ruby koans, python koans and others. It is a port of the prior koans with some modifications to highlight lisp-specific f...
The program is given as a flowchart with the nodes identified by labels. Without loss of generality I consider flowcharts with two distinguished nodes: the start node (the one node without an incoming arc) and the halt node (the one node without an outgoing arc). For a correctness proof each label is associated with an assertion.
An assertion is a formula of first-order predicate logic. As such it is restricted to a given vocabulary, which consists of function and predicate symbols and of variables. The variables can be bound or free; only the latter concern us here. The set of assertions that belong to the same flowchart are restricted to the same vocabulary. Whether an assertion is true depends on an interpretation of the function and predicate symbols and on the state (the values of the variables).
To follow a computation by a flowchart one has to know what the current state is and at what node control has arrived.
Maarten van Emden, History of "Structured Programming"
An assertion is a formula of first-order predicate logic. As such it is restricted to a given vocabulary, which consists of function and predicate symbols and of variables. The variables can be bound or free; only the latter concern us here. The set of assertions that belong to the same flowchart are restricted to the same vocabulary. Whether an assertion is true depends on an interpretation of the function and predicate symbols and on the state (the values of the variables).
To follow a computation by a flowchart one has to know what the current state is and at what node control has arrived.
Maarten van Emden, History of "Structured Programming"
My first remark is that, although the programmer’s activity ends when he has constructed a correct program, the process taking place under control of his program is the true subject matter of his activity, for it is this process that has to accomplish the desired effect; it is this process that in its dynamic behaviour has to satisfy the desired specifications.
Edsger W. Dijkstra, “Letters to the editor: go to statement considered harmful.” (1968)
Edsger W. Dijkstra, “Letters to the editor: go to statement considered harmful.” (1968)
Forwarded from A Math Book
Introduction to Computation.pdf
9 MB
Introduction to Computation: Haskell, Logic and Automata ( Donald Sannella - Michael Fourman - Haoran Peng - Philip Wadler ). Springer 2022
Forwarded from /dev/stupid (Cicca)
tuhdo.github.io
Emacs Mini Manual (PART 2) - LISP PRIMER: WHY PARENTHESES MATTER
Forwarded from A Math Book
Calculus Without Derivatives.pdf
7 MB
Calculus Without Derivatives ( Jean-Paul Penot ). Springer 2013
Programming language design benefits from constructs for extending the syntax and semantics of a host language. While C’s string-based macros empower programmers to introduce notational shorthands, the parser-level macros of Lisp encourage experimentation with domain-specific languages. The Scheme programming language improves on Lisp with macros that respect lexical scope.
The design of Racket—a descendant of Scheme—goes even further with the introduction of a full-fledged interface to the static semantics of the language. A Racket extension programmer can thus add constructs that are indistinguishable from “native” notation, large and complex embedded domain-specific languages, and even optimizing transformations for the compiler backend. This power to experiment with language design has been used to create a series of sub-languages for programming with first-class classes and modules, numerous languages for implementing the Racket system, and the creation of a complete and fully integrated typed sister language to Racket’s untyped base language.
Tobin-Hochstadt, et.al, Languages as Libraries (2011)
The design of Racket—a descendant of Scheme—goes even further with the introduction of a full-fledged interface to the static semantics of the language. A Racket extension programmer can thus add constructs that are indistinguishable from “native” notation, large and complex embedded domain-specific languages, and even optimizing transformations for the compiler backend. This power to experiment with language design has been used to create a series of sub-languages for programming with first-class classes and modules, numerous languages for implementing the Racket system, and the creation of a complete and fully integrated typed sister language to Racket’s untyped base language.
Tobin-Hochstadt, et.al, Languages as Libraries (2011)