Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
[RC Diary] Working from home, little scheming, Noam Chomsky (-72)

[RC Diary] Working from home, little scheming, Noam Chomsky (-72)

Requiem for the American Dream

It's a documentary in which Noam Chomsky analises the state of society and economy, there are lots of concepts explained as the video covers ten items that Noam Chomsky thinks are crucial to answer the question "how did we get to this point?".

For me it was an explosion of concepts, I've saved a list of items that I want to understand / read about:

  • Walter Lippmann
  • Neo liberalism
  • Joseph Eugene Stiglitz
  • Powell memorandum
  • Aristotle politics
  • The wealth of nations Adam Smith

The little schemer chapter 3

I should speed this up if I want to go through the first 3 chapters of SICP. I also kind of failed to list recall from memory laws and commandments so I'll setup a page on my blog just for that, if that won't make sense in the long run I will just remove it.

I find it useful though how the authors build functions by first asking questions and then putting them all together to create something that works.

I WISH I COULD GO BACK IN TIME AND SAY TO MY YOUNGER SELF:

Hello young Alberto, I come from the future. Go through The Little Schemer. Learn Lisp.
I am already thanking you. In fact, I can't thank you enough.

I would love to have someone to teach programming to, starting with Scheme.

There's an interesting property that could be seen going from functions that affect a single instance in a list, to functions that affect multiples instances in a list, for example:

(def insertR
  "inserts `nu` on the right side of the first occurrence of `old` in `lat`"
  (fn [nu old lat]
    (cond
      (null? lat) '()
      (= old (first lat)) (cons old (cons nu (rest lat)))
      true (cons (first lat) (insertR nu old (rest lat))))))
      
(def multiinsertR
  "inserts `nu` on the right side of all occurrences of `old` in `lat`"
  (fn [nu old lat]
    (cond
      (null? lat) '()
      (= old (first lat)) (cons old (cons nu (multiinsertR nu old (rest lat))))
      true (cons (first lat) (multiinsertR nu old (rest lat))))))

The difference is that I call multiinsertR in the recursive step where a match is found between old and the current atom.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment