Commit d0203339 authored by Neil Mather's avatar Neil Mather

Add blog posts functionality

And backfill some existing EvalApply related posts.
parent 249febdc
Pipeline #75255357 passed with stage
in 1 minute and 48 seconds
......@@ -158,10 +158,15 @@ footer {
.date {
margin-top: -1rem;
margin-bottom: 2rem;
color: #666;
}
.author {
font-size: smaller;
color: #666;
margin-bottom: 2rem;
}
.post img, .centered-image {
display: block;
max-width: 100%;
......@@ -207,3 +212,4 @@ footer {
.syntax-open, .syntax-close {
color: #999;
}
......@@ -2,6 +2,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (ice-9 match)
#:use-module (haunt post)
#:export (date
stylesheet
anchor
......
......@@ -30,12 +30,14 @@
(commonmark)
;; (syntax-highlight)
;; (syntax-highlight scheme)
(srfi srfi-1)
(srfi srfi-19)
(sxml match)
(sxml transform)
(web uri))
(define %collections
`(("Recent Blog Posts" "index.html" ,posts/reverse-chronological)))
`(("Recent Posts" "posts.html" ,posts/reverse-chronological)))
(define parse-lang
(let ((rx (make-regexp "-*-[ ]+([a-z]*)[ ]+-*-")))
......@@ -153,6 +155,8 @@ free culture works available under the " ,%cc-by-sa-link " license.")
(div (@ (class "date"))
,(date->string (post-date post)
"~B ~d, ~Y"))
(div (@ (class "author"))
"Author: " ,(post-ref post 'author))
(div (@ (class "post"))
,(post-sxml post))))
#:collection-template
......@@ -319,7 +323,7 @@ free culture works available under the " ,%cc-by-sa-link " license.")
come-along-page
contact-page
website-page
;(blog #:theme evalapply-theme #:collections %collections)
(blog #:theme evalapply-theme #:collections %collections)
(atom-feed)
(atom-feeds-by-tag)
;(static-directory "js")
......
title: Notes on SICP Lecture 1A
date: 2019-06-03 21:42
author: Neil
tags: meta
summary: Setting up the blog section of the site.
---
Watched the [Lecture 1a video for SICP](https://archive.org/details/halmit1a).
(Not sure how exactly these correspond to the book – is it by chapter?)
It’s Hal Abelson giving the lectures. I find him really engaging. And, I did not
know this until I looked him up just now, but is a founding director of both
Creative Commons and the Free Software Foundation. Rad!
Anyway, here’s a few notes I made while watching the video.
## Not computers, not a science
Off the bat, he calls out computer science as not really being a science. Yup. I
liked here also how he said it’s also not really about computers. To call
computer science is conflating it too much with the tools we associate with it.
But it’s not really about computers.
It’s more about the description of processes, how to do things, and techniques
for dealing with the complexity of those processes as they get larger and
larger.
He touched on the difference between declarative knowledge – a description of
what something is; vs imperative knowledge – describing how something is done.
## Techniques for complexity
Three of the techniques for dealing with complexity that will feature heavily in
the course:
- Black Box Abstractions
- Conventional Interfaces
- Meta-linguistic abstraction (AKA making new languages)
Then he started up on black-box abstractions a bit.
## Black Box Abstractions
- Primitive elements
- things like +, 3, 17.4, 5
- you can combine them together to do things with them
- Means of combination
- `(+ 3 (* 5 6) 8 2)`
- this is a combination with an operator and operands
- combinations are really trees
- Means of abstraction
- being able to define a procedure for doing something, and reusing it
- e.g. `(define (square x) (* 5 5))`
- which is syntatic sugar for `(define square (lambda (x) (* x x)))`
- even better: being able to define general concepts
Once defined, you can use the things you’ve defined as if there were primitives. This is apparently a key thing of Lisp and he sound quite excited by it.
Quick mention of case analysis, like:
```
(define (abs x)
(cond ((< x 0) (- x))
(cond ((= x 0) 0)
(cond ((> x 0) x)))))
```
He then defined Heron of Alexandria’s method for finding square roots by hand:
```
(define (try guess x)
(if (good-enough? guess x)
guess
(try (improve guess x) x)))
```
```
(define (sqrt x) (try 1 x))
```
With the point being that it’s built-up of other building blocks, like `improve`
and `good-enough?`. And also that try is recursive (it calls itself, only stopping
when a particular condition is met.)
If you were to package all the procedures for sqrt into one place, it would be
called a block structure.
## Summary
Alright. So I guess in summary: we’re going to be thinking about how we can
represent imperative knowledge. And ways in which we can try to keep on top of
things when we represent BIG chunks of imperative knowledge.
title: Read up to section 1.1.5 of SICP
date: 2019-08-07 20:05
author: Neil
tags: meta
summary: Read up to section 1.1.5 of SICP.
---
Read up to section 1.1.5 of SICP.
Some notes to self of things I found interesting:
## The environment
I like the idea of giving more thought to the environment itself. I’ve always
thought more about the code, less about what the environment is doing.
> the interpreter must maintain some sort of memory that keeps track of the
> name-object pairs. This memory is called the environment.
> the general notion of the environment as providing a context in which
> evaluation takes place will play an important role in our understanding of
> program execution.
## Evaluation
Tree accumulation – a new concept to me. I like trees as structures.
> In general, we shall see that recursion is a very powerful technique for
> dealing with hierarchical, treelike objects. In fact the “percolate values
> upward” form of the evaluation rule is an example of a general kind of process
> known as tree accumulation
## Special forms
Read about special forms before, but it kind of clicked here to read that they
are exceptions to general evaluation and have their own rules.
> Such exceptions to the general evaluation rule are called special forms.
> define is the only example of a special form that we have seen so far, but we
> will meet others shortly. Each special form has its own evaluation rule.
## Applicative-order evaluation vs normal-order evaluation
You can evaluate procedures in different ways.
I think there’s a subtle distinction beween evaluation and procedure
application that I’ve missed and need to look back over.
----
That’ll do for now!
title: EvalApply 30th July 2019
date: 2019-07-30 21:18
author: Neil
tags: meta
---
We had a fun session today, during which we decided to add to our
homepage a sentence about our interest in examining programming and technology
in a wider societal context. Early on we discussed that this was important to us
all, and we often end up chatting about these topics when we meet – perhaps more
so than SICP, so far!
We were pondering EvalApply as a name for the group for a short period – from an
early email:
> In addition, thinking about it further, it also has a double meaning to me
> that I really like.
>
> “Before we apply a function we must first evaluate its
> arguments.”
>
> Taken metaphorically I feel that this captures [our]
> philosophical and political views towards technology in a broader sense. We
> consider the social ramifications of technology before recommending its use.
> We evaluate the arguments before applying its function.
Some things that I remember we chatted about today:
The important of constraints, or having a limited palette. I can’t remember how
it came up, but for me it recalled some of the ideas from old tracker music
software and the demoscene, where using restricted hardware and software can be
a useful creative constraint.
We talked about community moderation (further to a short note about it earlier
this week), with Panda making a strong point that not everyone has the resources
to extensively moderate a community. It had come up for me recently in the
context of the Fediverse, and the discussion over the defederation of the Gab
instance, and the problems with freedom 0. “The freedom to run the program as
you wish, for any purpose” – this is not good if the purpose is, let’s say,
neo-nazism.
Dan discussed the philosopher Simondon (an inspiration for Deleuze and Guattari,
I understand), and the topic of alienation and technology. Not just alienation
as a result of losing autonomy in a capitalist system; but also alienation from
technology – not knowing how things work or being able to tinker with them.
Emacs being a beautiful example of software you can see the innards of and
tinker with, should you wish to.
Dan did a bit of SICP.
Dan and Panda chatted about another French philosopher, whose name I have
unfortunately forgotten, and the philosophy of autism.
I read a couple of paragraphs of SICP.
Dan described the difference between technics and technology, which is really
interesting – a distinction between the machines themselves, and the analysis of
them.
![](/images/evalapply-20190730.jpg "Eval'ing and apply'ing in the May Day Rooms")
title: Adding blog posts to EvalApply
date: 2019-08-07 20:05
author: Neil
tags: meta
summary: Setting up the blog section of the site.
---
So far, we have been making use of only the pages functionality of Haunt.
However, as a static site generator, it also comes with functionality for
blog posts. We've just turned this on, so we can also add in blog posts
about what we're covering in EvalApply.
We have already written some blog posts about our progress through SICP, so we
can backfill these posts in on the site.
title: First post!
date: 2019-06-18 21:00
tags: hello
summary: hello!
---
Hello, world!
<!DOCTYPE html><head><meta charset="utf-8" /><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /><link rel="manifest" href="/site.webmanifest" /><meta name="msapplication-TileColor" content="#da532c" /><meta name="theme-color" content="#ffffff" /><title>Adding blog posts to EvalApply — evalapply</title><link rel="stylesheet" href="/css/reset.css" /><link rel="stylesheet" href="/css/fonts.css" /><link rel="stylesheet" href="/css/evalapply.css" /></head><body><div class="container"><div class="nav"><ul><li><a href="/">EvalApply</a></li><li class="fade-text"> </li><li><a href="/sicp.html">SICP</a></li><li><a href="/resources.html">Resources</a></li><li><a href="/come-along.html">Come along</a></li><li><a href="/conduct.html">Code of conduct</a></li><li><a href="/contact.html">Contact</a></li></ul></div><h1 class="title">Adding blog posts to EvalApply</h1><div class="date">August 07, 2019</div><div class="author">Author: Neil</div><div class="post"><p>So far, we have been making use of only the pages functionality of Haunt.
However, as a static site generator, it also comes with functionality for
blog posts. We've just turned this on, so we can also add in blog posts
about what we're covering in EvalApply.</p><p>We have already written some blog posts about our progress through SICP, so we
can backfill these posts in on the site.</p></div><footer class="text-center"><p class="copyright">© 2019 EvalApply<a class="cc-button" href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://licensebuttons.net/l/by-sa/4.0/80x15.png" /></a></p><p>The text and images on this site are
free culture works available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution Share-Alike 4.0 International</a> license.</p><p>This website (<a href="https://gitlab.com/evalapply/evalapply.gitlab.io">source</a> and <a href="/website.html">more info</a>) is built with <a href="http://haunt.dthompson.us">Haunt</a>, a static site generator written in <a href="https://gnu.org/software/guile">Guile Scheme</a>.</p></footer></div></body>
\ No newline at end of file
......@@ -158,10 +158,15 @@ footer {
.date {
margin-top: -1rem;
margin-bottom: 2rem;
color: #666;
}
.author {
font-size: smaller;
color: #666;
margin-bottom: 2rem;
}
.post img, .centered-image {
display: block;
max-width: 100%;
......@@ -207,3 +212,4 @@ footer {
.syntax-open, .syntax-close {
color: #999;
}
<!DOCTYPE html><head><meta charset="utf-8" /><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /><link rel="manifest" href="/site.webmanifest" /><meta name="msapplication-TileColor" content="#da532c" /><meta name="theme-color" content="#ffffff" /><title>EvalApply 30th July 2019 — evalapply</title><link rel="stylesheet" href="/css/reset.css" /><link rel="stylesheet" href="/css/fonts.css" /><link rel="stylesheet" href="/css/evalapply.css" /></head><body><div class="container"><div class="nav"><ul><li><a href="/">EvalApply</a></li><li class="fade-text"> </li><li><a href="/sicp.html">SICP</a></li><li><a href="/resources.html">Resources</a></li><li><a href="/come-along.html">Come along</a></li><li><a href="/conduct.html">Code of conduct</a></li><li><a href="/contact.html">Contact</a></li></ul></div><h1 class="title">EvalApply 30th July 2019</h1><div class="date">July 30, 2019</div><div class="author">Author: Neil</div><div class="post"><p>We had a fun session today, during which we decided to add to our
homepage a sentence about our interest in examining programming and technology
in a wider societal context. Early on we discussed that this was important to us
all, and we often end up chatting about these topics when we meet – perhaps more
so than SICP, so far!</p><p>We were pondering EvalApply as a name for the group for a short period – from an
early email:</p><blockquote><p>In addition, thinking about it further, it also has a double meaning to me
that I really like.</p><p>“Before we apply a function we must first evaluate its
arguments.”</p><p>Taken metaphorically I feel that this captures [our]
philosophical and political views towards technology in a broader sense. We
consider the social ramifications of technology before recommending its use.
We evaluate the arguments before applying its function.</p></blockquote><p>Some things that I remember we chatted about today:</p><p>The important of constraints, or having a limited palette. I can’t remember how
it came up, but for me it recalled some of the ideas from old tracker music
software and the demoscene, where using restricted hardware and software can be
a useful creative constraint.</p><p>We talked about community moderation (further to a short note about it earlier
this week), with Panda making a strong point that not everyone has the resources
to extensively moderate a community. It had come up for me recently in the
context of the Fediverse, and the discussion over the defederation of the Gab
instance, and the problems with freedom 0. “The freedom to run the program as
you wish, for any purpose” – this is not good if the purpose is, let’s say,
neo-nazism.</p><p>Dan discussed the philosopher Simondon (an inspiration for Deleuze and Guattari,
I understand), and the topic of alienation and technology. Not just alienation
as a result of losing autonomy in a capitalist system; but also alienation from
technology – not knowing how things work or being able to tinker with them.
Emacs being a beautiful example of software you can see the innards of and
tinker with, should you wish to.</p><p>Dan did a bit of SICP.</p><p>Dan and Panda chatted about another French philosopher, whose name I have
unfortunately forgotten, and the philosophy of autism.</p><p>I read a couple of paragraphs of SICP.</p><p>Dan described the difference between technics and technology, which is really
interesting – a distinction between the machines themselves, and the analysis of
them.</p><p><img src="/images/evalapply-20190730.jpg" alt="" title="Eval'ing and apply'ing in the May Day Rooms" /></p></div><footer class="text-center"><p class="copyright">© 2019 EvalApply<a class="cc-button" href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://licensebuttons.net/l/by-sa/4.0/80x15.png" /></a></p><p>The text and images on this site are
free culture works available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution Share-Alike 4.0 International</a> license.</p><p>This website (<a href="https://gitlab.com/evalapply/evalapply.gitlab.io">source</a> and <a href="/website.html">more info</a>) is built with <a href="http://haunt.dthompson.us">Haunt</a>, a static site generator written in <a href="https://gnu.org/software/guile">Guile Scheme</a>.</p></footer></div></body>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title>evalapply</title><id>https://evalapply.space/feeds/tags/hello.xml</id><subtitle>Tag: hello</subtitle><updated>2019-07-30T19:17:44+0100</updated><link href="evalapply.space/feeds/tags/hello.xml" rel="self" /><link href="evalapply.space" /><entry><title>First post!</title><id>https://evalapply.space/first-post.html</id><author><name>Eval Apply</name><email>lambda@evalapply.space</email></author><updated>2019-06-18T21:00:00+0100</updated><link href="https://evalapply.space/first-post.html" rel="alternate" /><summary type="html">&lt;p&gt;Hello, world!&lt;/p&gt;</summary></entry></feed>
\ No newline at end of file
This diff is collapsed.
<!DOCTYPE html><head><meta charset="utf-8" /><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /><link rel="manifest" href="/site.webmanifest" /><meta name="msapplication-TileColor" content="#da532c" /><meta name="theme-color" content="#ffffff" /><title>Notes on SICP Lecture 1A — evalapply</title><link rel="stylesheet" href="/css/reset.css" /><link rel="stylesheet" href="/css/fonts.css" /><link rel="stylesheet" href="/css/evalapply.css" /></head><body><div class="container"><div class="nav"><ul><li><a href="/">EvalApply</a></li><li class="fade-text"> </li><li><a href="/sicp.html">SICP</a></li><li><a href="/resources.html">Resources</a></li><li><a href="/come-along.html">Come along</a></li><li><a href="/conduct.html">Code of conduct</a></li><li><a href="/contact.html">Contact</a></li></ul></div><h1 class="title">Notes on SICP Lecture 1A</h1><div class="date">June 03, 2019</div><div class="author">Author: Neil</div><div class="post"><p>Watched the <a href="https://archive.org/details/halmit1a">Lecture 1a video for SICP</a>.
(Not sure how exactly these correspond to the book – is it by chapter?)</p><p>It’s Hal Abelson giving the lectures. I find him really engaging. And, I did not
know this until I looked him up just now, but is a founding director of both
Creative Commons and the Free Software Foundation. Rad!</p><p>Anyway, here’s a few notes I made while watching the video.</p><h2>Not computers, not a science</h2><p>Off the bat, he calls out computer science as not really being a science. Yup. I
liked here also how he said it’s also not really about computers. To call
computer science is conflating it too much with the tools we associate with it.
But it’s not really about computers.</p><p>It’s more about the description of processes, how to do things, and techniques
for dealing with the complexity of those processes as they get larger and
larger.</p><p>He touched on the difference between declarative knowledge – a description of
what something is; vs imperative knowledge – describing how something is done.</p><h2>Techniques for complexity</h2><p>Three of the techniques for dealing with complexity that will feature heavily in
the course:</p><ul><li>Black Box Abstractions</li><li>Conventional Interfaces</li><li>Meta-linguistic abstraction (AKA making new languages)</li></ul><p>Then he started up on black-box abstractions a bit.</p><h2>Black Box Abstractions</h2><ul><li><p>Primitive elements</p><ul><li>things like +, 3, 17.4, 5</li><li>you can combine them together to do things with them</li></ul></li><li><p>Means of combination</p><ul><li><code>(+ 3 (* 5 6) 8 2)</code></li><li>this is a combination with an operator and operands</li><li>combinations are really trees</li></ul></li><li><p>Means of abstraction</p><ul><li><p>being able to define a procedure for doing something, and reusing it</p><ul><li>e.g. <code>(define (square x) (* 5 5))</code></li><li>which is syntatic sugar for <code>(define square (lambda (x) (* x x)))</code></li></ul></li><li><p>even better: being able to define general concepts</p></li></ul></li></ul><p>Once defined, you can use the things you’ve defined as if there were primitives. This is apparently a key thing of Lisp and he sound quite excited by it.</p><p>Quick mention of case analysis, like:</p><pre><code>(define (abs x)
(cond ((&lt; x 0) (- x))
(cond ((= x 0) 0)
(cond ((&gt; x 0) x)))))</code></pre><p>He then defined Heron of Alexandria’s method for finding square roots by hand:</p><pre><code>(define (try guess x)
(if (good-enough? guess x)
guess
(try (improve guess x) x)))</code></pre><pre><code>(define (sqrt x) (try 1 x))</code></pre><p>With the point being that it’s built-up of other building blocks, like <code>improve</code>
and <code>good-enough?</code>. And also that try is recursive (it calls itself, only stopping
when a particular condition is met.)</p><p>If you were to package all the procedures for sqrt into one place, it would be
called a block structure.</p><h2>Summary</h2><p>Alright. So I guess in summary: we’re going to be thinking about how we can
represent imperative knowledge. And ways in which we can try to keep on top of
things when we represent BIG chunks of imperative knowledge.</p></div><footer class="text-center"><p class="copyright">© 2019 EvalApply<a class="cc-button" href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://licensebuttons.net/l/by-sa/4.0/80x15.png" /></a></p><p>The text and images on this site are
free culture works available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution Share-Alike 4.0 International</a> license.</p><p>This website (<a href="https://gitlab.com/evalapply/evalapply.gitlab.io">source</a> and <a href="/website.html">more info</a>) is built with <a href="http://haunt.dthompson.us">Haunt</a>, a static site generator written in <a href="https://gnu.org/software/guile">Guile Scheme</a>.</p></footer></div></body>
\ No newline at end of file
<!DOCTYPE html><head><meta charset="utf-8" /><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /><link rel="manifest" href="/site.webmanifest" /><meta name="msapplication-TileColor" content="#da532c" /><meta name="theme-color" content="#ffffff" /><title>Recent Posts — evalapply</title><link rel="stylesheet" href="/css/reset.css" /><link rel="stylesheet" href="/css/fonts.css" /><link rel="stylesheet" href="/css/evalapply.css" /></head><body><div class="container"><div class="nav"><ul><li><a href="/">EvalApply</a></li><li class="fade-text"> </li><li><a href="/sicp.html">SICP</a></li><li><a href="/resources.html">Resources</a></li><li><a href="/come-along.html">Come along</a></li><li><a href="/conduct.html">Code of conduct</a></li><li><a href="/contact.html">Contact</a></li></ul></div><h1>Recent Posts</h1><div class="summary"><h2><a href="/adding-blog-posts-to-evalapply.html">Adding blog posts to EvalApply</a></h2><div class="date">August 07, 2019</div><div class="post"><p>So far, we have been making use of only the pages functionality of Haunt.
However, as a static site generator, it also comes with functionality for
blog posts. We've just turned this on, so we can also add in blog posts
about what we're covering in EvalApply.</p></div><a href="/adding-blog-posts-to-evalapply.html">read more ➔</a></div><div class="summary"><h2><a href="/read-up-to-section-115-of-sicp.html">Read up to section 1.1.5 of SICP</a></h2><div class="date">August 07, 2019</div><div class="post"><p>Read up to section 1.1.5 of SICP.</p></div><a href="/read-up-to-section-115-of-sicp.html">read more ➔</a></div><div class="summary"><h2><a href="/evalapply-30th-july-2019.html">EvalApply 30th July 2019</a></h2><div class="date">July 30, 2019</div><div class="post"><p>We had a fun session today, during which we decided to add to our
homepage a sentence about our interest in examining programming and technology
in a wider societal context. Early on we discussed that this was important to us
all, and we often end up chatting about these topics when we meet – perhaps more
so than SICP, so far!</p></div><a href="/evalapply-30th-july-2019.html">read more ➔</a></div><div class="summary"><h2><a href="/notes-on-sicp-lecture-1a.html">Notes on SICP Lecture 1A</a></h2><div class="date">June 03, 2019</div><div class="post"><p>Watched the <a href="https://archive.org/details/halmit1a">Lecture 1a video for SICP</a>.
(Not sure how exactly these correspond to the book – is it by chapter?)</p></div><a href="/notes-on-sicp-lecture-1a.html">read more ➔</a></div><footer class="text-center"><p class="copyright">© 2019 EvalApply<a class="cc-button" href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://licensebuttons.net/l/by-sa/4.0/80x15.png" /></a></p><p>The text and images on this site are
free culture works available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution Share-Alike 4.0 International</a> license.</p><p>This website (<a href="https://gitlab.com/evalapply/evalapply.gitlab.io">source</a> and <a href="/website.html">more info</a>) is built with <a href="http://haunt.dthompson.us">Haunt</a>, a static site generator written in <a href="https://gnu.org/software/guile">Guile Scheme</a>.</p></footer></div></body>
\ No newline at end of file
<!DOCTYPE html><head><meta charset="utf-8" /><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /><link rel="manifest" href="/site.webmanifest" /><meta name="msapplication-TileColor" content="#da532c" /><meta name="theme-color" content="#ffffff" /><title>Read up to section 1.1.5 of SICP — evalapply</title><link rel="stylesheet" href="/css/reset.css" /><link rel="stylesheet" href="/css/fonts.css" /><link rel="stylesheet" href="/css/evalapply.css" /></head><body><div class="container"><div class="nav"><ul><li><a href="/">EvalApply</a></li><li class="fade-text"> </li><li><a href="/sicp.html">SICP</a></li><li><a href="/resources.html">Resources</a></li><li><a href="/come-along.html">Come along</a></li><li><a href="/conduct.html">Code of conduct</a></li><li><a href="/contact.html">Contact</a></li></ul></div><h1 class="title">Read up to section 1.1.5 of SICP</h1><div class="date">August 07, 2019</div><div class="author">Author: Neil</div><div class="post"><p>Read up to section 1.1.5 of SICP.</p><p>Some notes to self of things I found interesting:</p><h2>The environment</h2><p>I like the idea of giving more thought to the environment itself. I’ve always
thought more about the code, less about what the environment is doing.</p><blockquote><p>the interpreter must maintain some sort of memory that keeps track of the
name-object pairs. This memory is called the environment.</p></blockquote><blockquote><p>the general notion of the environment as providing a context in which
evaluation takes place will play an important role in our understanding of
program execution.</p></blockquote><h2>Evaluation</h2><p>Tree accumulation – a new concept to me. I like trees as structures.</p><blockquote><p>In general, we shall see that recursion is a very powerful technique for
dealing with hierarchical, treelike objects. In fact the “percolate values
upward” form of the evaluation rule is an example of a general kind of process
known as tree accumulation</p></blockquote><h2>Special forms</h2><p>Read about special forms before, but it kind of clicked here to read that they
are exceptions to general evaluation and have their own rules.</p><blockquote><p>Such exceptions to the general evaluation rule are called special forms.
define is the only example of a special form that we have seen so far, but we
will meet others shortly. Each special form has its own evaluation rule.</p></blockquote><h2>Applicative-order evaluation vs normal-order evaluation</h2><p>You can evaluate procedures in different ways.</p><p>I think there’s a subtle distinction beween evaluation and procedure
application that I’ve missed and need to look back over.</p><hr /><p>That’ll do for now!</p></div><footer class="text-center"><p class="copyright">© 2019 EvalApply<a class="cc-button" href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://licensebuttons.net/l/by-sa/4.0/80x15.png" /></a></p><p>The text and images on this site are
free culture works available under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution Share-Alike 4.0 International</a> license.</p><p>This website (<a href="https://gitlab.com/evalapply/evalapply.gitlab.io">source</a> and <a href="/website.html">more info</a>) is built with <a href="http://haunt.dthompson.us">Haunt</a>, a static site generator written in <a href="https://gnu.org/software/guile">Guile Scheme</a>.</p></footer></div></body>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment