Download The Reasoned cresalslopebslag.cf DOWNLOAD PDF - MB. Share Embed Donate. Report this link. The Reasoned cresalslopebslag.cf - Ebook download as PDF File .pdf), Text File .txt) or read book online. Request PDF on ResearchGate | On Jan 1, , Daniel P. Friedman and others published The Reasoned Schemer.
|Language:||English, Spanish, Japanese|
|Genre:||Business & Career|
|Distribution:||Free* [*Sign up for free]|
The goal of The Reasoned Schemer is to help the functional programmer think The authors of The Reasoned Schemer believe that logic programming is a. The Seasoned Schemer.. 22 Yang. WNUNUN. Nam me vrylar B ve. Daniel P. Friedman and Matthias Felleisen. Foreword and Afterword by Guy L. Steele Jr. the reasoned schemer the mit press *summary books*: the reasoned schemer reasoned schemer daniel p friedman pdf book is the book you are looking for.
Those are made to be burned through, though. Probably not one sitting many ideas need time to sink in , but only a couple sessions each. I already knew much of the material, but a very fun read. Nice stickers, too! I read most of chapters 3, 4, and 5 of SICP in one night and the following morning.
I'm on the second pass, doing most of the exercises, and nearly done with chapter 2. I'm taking a break, though. It took a while to get through, though - It's quite large. What a wonderful book!
I just got it in the mail yesterday, but quite good so far. Also: When you're reading hard programming books, do the exercises! You don't have to do them all, though at least half is a good idea.
It reinforces what you've read, and shows you what you actually know vs. I tend to read the book first, then do exercises on the second pass. I wouldn't leave off the The Reasoned Schemer, I've been working on that book for over a month now. Better than coffee. Might actually finally understand monads. SICP is astounding.
Thoroughly worked through the first three chapters years ago. The first goal succeeds while associating f with the fresh variable q. The second goal succeeds because although q is no longer fresh, f is already associated with it.
When one variable is associated with another, we say they co-refer or share. Every variable introduced by fresh or run is different from every other variable introduced by fresh or run. The one in the else f cond line. No, it fails because the answer of the second cond line is u. See William F. Clause and Effect. Springer, Does cond u u else s e succeed?
Does conde s s else u succeed? The s preserves the association of x to olive. The s preserves the association of x to oil. Since no more goals succeed, we are done. This expression is written run 1 x Once the first conde line fails, it is as if that line were not there. What value is associated with r in 53 split pea. They must all succeed for the line to succeed. This is indeed interesting. This list could have been built see 9: This list is distinguished from the function application x y by the use of bold parentheses.
Henceforth, consult the index for how we write the names of functions. Then x is associated with pear, which in turn associates r with pear. Here is the definition of cdr o. It is almost the same as car o. Taking the car o of l associates the car of l with x. When we associate x with a, we also associate a, the car of l , with a, so l is associated with the list a c o r n. Since cons d a b c is d a b c , cons o associates x with d. We then perform the cons o , associating x with c, z with d, and y with e.
What value can we associate with x so that cons x a x c is d a x c? Obviously, d is the value. Then when we associate l with d a x c , we associate x with d.
Then when we cons o x onto a x c , we associate x with d. Since l is fresh, cdr o l s places a fresh variable in the first position of l , while associating w and a n s with the second position and the cdr of the cdr of l , respectively. The first variable in l gets associated with x , which in turn gets associated with b. The cdr of l is a list whose car is the variable w.
That variable gets associated with y, which in turn gets associated with e. Is split! What is the value of 43 t. Is pair a pair? Is pear a pair? What is the value of 51 split! What is the value of 54 t. What is the value of 3 f. The definition of list?
Hence, it uses conde instead of cond. First we take the cdr of l and associate it with a fresh variable d , and then we use d in the recursive call. The First Commandment To transform a function whose value is a Boolean into a function whose value is a goal, replace cond with conde and unnest each question and answer. Unnest the answer t or f by replacing it with s or u. Why is 0 the value associated with x in 8 When determining the goal returned by list o , it is not necessary to determine the value of x.
Therefore x remains fresh, which means that the goal returned from the call to list o succeeds for all values associated with x. But x does not get associated with any value.
Maybe we should use run5 to get the first five values. In list? To have each conde result in a goal, we unnest each cond question and each cond answer. Used with recursion, a conde expression can produce an unbounded number of values. We have used an upper bound, 5 in the previous frame, to keep from creating a list with an unbounded number of values. Otherwise, lol? Here is the definition of lol o. What else is different? Is the value of lol o l always a goal? What is the value of run1 l lol o l 30 18 19 20 list?
Since l is fresh, null o l succeeds and in the process associates l with. Is tofu tofu a twin? Is e tofu a twin? Is g g tofu tofu a list of twins? Is g g e tofu a list of twins? Consider the definition of twins o. What value is associated with q in 32 t.
Chapter 3 How is tofu the value associated with z in 35 In the call to twins o the first cons o associates x with the car of z tofu , which is z , and associates y with the cdr of z tofu , which is tofu.
Remember that tofu is the same as tofu! The second cons o associates x , and therefore z , with the car of y, which is tofu. What value is associated with z in How is the value associated with z in 41 run1 z lot o g g! In the first call to lot o , l is the list g g! Since this list is not null, null o l fails and we move on to the second conde line. In the second conde line, d is associated with the cdr of g g!
The variable d is then passed in the recursive call to lot o. Since the variable z associated with d is fresh, null o l succeeds and associates d and therefore z with the empty list. Chapter 3 What do we get when we replace w , x , y, and z by the third list in the previous frame? It will make sense soon. What is the value of 53 t, but this is uninteresting. Is the first conde line unnecessary? Whenever a conde line is guaranteed to fail, it is unnecessary. Seeing Old Friends in New Ways 63 hummus, because we can ignore the first conde line since l is not the empty list, and because the second conde line associates the fresh variable y with the value of car l , which is hummus.
Since we pretend that the second conde line has failed, we also get to assume that y has been refreshed. We filled in a blank in the list so that member o succeeds. Chapter 3 71 What is the value of e 0 0 e. We know from frame 70 that when x gets associated with e, member o e pasta x fagioli y succeeds, leaving y fresh. Then x is refreshed. For the second value, y gets an association, but x does not. What is the value of 73 tofu!
What is the value of 0 74 Every list whose car is tofu. Clearly each list satisfies member o , since tofu is in every list. Now we address how the fifth list appears.
When we pretend that eq-car o fails, l is refreshed and the last conde line is tried. So each value becomes one longer than the previous value. In the recursive call member o x d , the call to eq-car o associates tofu with the car of the cdr of l.
Thus 3 will appear where tofu appeared in the fourth list. Is it possible to remove the dotted variable at the end of each list, making it proper? That should give us enough of a clue. What should the cdr be when we find this value? Here is a definition of pmember o.
What is the value of run5 l pmember o tofu l 40 Chapter 3 What is the value of 81 Is it t t? Explain why. Here is a refined definition of pmember o.
Seeing Old Friends in New Ways 85 The second conde line contributes a value because there is a tofu at the end of the list. Then the third conde line contributes a value for the first tofu in the list and it contributes a value for the second tofu in the list. Thus in all, three values are contributed. How can we simplify this definition a bit more? Now what is the value of 88 Here is a more refined definition of pmember o. Chapter 3 How can we characterize this list of values?
Why are the odd positions proper lists? Why are the even positions improper lists? How can we redefine pmember o so that the lists in the odd and even positions are swapped? Now what is the value of 94 run l pmember o tofu l 12 Seeing Old Friends in New Ways define pmember o lambda x l conde eq-car o l x fresh a d cdr o l a!
Also, instead of returning the first value, it returns the list of the first value. Given that its argument is a list, how does first-value differ from car What is the value of 96 pasta.
The eq-car o l x is now the last question, so we can insert an else to improve clarity. How does it differ from the definition of member o in frame 54? How can we simplify this definition? How does memo differ from list o , lol o , and member o Which expression has been unnested?
The Second Commandment To transform a function whose value is not a Boolean into a function whose value is a goal, add an extra argument to hold its value, replace cond with conde , and unnest each question and answer.
In a call to memo from run1 , how many times does out get an association? What is the value of 9 10 At most once. Chapter 4 What value is associated with r in 12 tofu. Where do the other ten lists come from?
The second 0 corresponds to finding the second tofu. So memo creates all the possible lists with tofu as one element of the list.
How can memo be simplified? Why are there three freshes in fresh res fresh d cdr o l d rember o x d res fresh a car o l a cons o a res out Members Only 25 Because d is only mentioned in cdr o l d and rember o x d res ; a is only mentioned in car o l a and cons o a res out ; but res is mentioned throughout.
How might we use cons o in place of the car o and the cdr o 27 How does the first cons o differ from the second one? The first cons o , cons o a d l , appears to associate values with the variables a and d. In other words, it appears to take apart a cons pair, whereas cons o a res out appears to be used to build a cons pair. Indeed they can. The car o within the eq-car o l x associates y with peas, forcing y to be removed from the list. Of course we can associate with y a value other than peas.
That will still cause rember o peas a b y d peas e out to succeed, but run1 produces only one value. Why does b come first? Why does the list still contain a 34 In order to remove the a, y gets associated with a. The y in the list is then replaced with its value. Why is 35 It looks like y has disappeared. Has the b in the original list been removed? Why does the list still contain a b 37 In order to remove the b, y gets associated with b.
Why is 38 Why is b a d 0 e the first value? Members Only 53 Not quite. Why is 40 Because the d has been removed from the list. Why does the list still contain a d 41 In order to remove the d, y gets associated with d. Also the y in the list is replaced with its value. Why is 42 Because the z has been removed from the list. Why does the list contain 43 0 44 Why is a b e d 0 When car l is y, car o l a associates the fresh variable y with the fresh variable a. In order to remove the y, y gets associated with z.
Since z is also a fresh variable, the a, y, and z co-refer. Because the e has been removed from the list. Thus z and y no longer co-refer. Chapter 4 47 Why is a b 0 d 1 e Because we have not removed anything from the list. When car l is z , car o l a associates the fresh variable z with a new fresh variable a. Also the y and z in the list are replaced respectively with their reified values. As long as y and z are the same, y can be anything. How is d d the first value?
Members Only 53 rember o removes y from the list y d z e , yielding the list d z e ; d z e is the same as out, y d e , only when both y and z are the value d. Also, in order to remove the d, y gets associated with d. Also, in order to remove the z , y gets associated with z , so they co-refer.
Also, in order to remove the e, y gets associated with e. How is 0 0 the third value? How is e e the fourth value? What is the value of 57 run w fresh y z out rember o y a b y d z! Why is 0 the first value? When the eq-car o l x question of the second conde line succeeds, car l is z. The answer of the second conde line, cdr o l out , also succeeds, associating the cdr of l the fresh variable w with the fresh variable out.
The variable out, however, is just res, the fresh variable passed into the recursive call to rember o. The null o l question of the first conde line then succeeds, associating w with the empty list. The eq-car o l x question of the second conde line succeeds, however, and associates w with a pair whose car is y. The answer cdr o l out of the second conde line also succeeds, associating w with a pair whose cdr is out.
How is 0 the second, third, and fourth value? How is 0 the fifth value? How is the sixth value? How is 0! Members Only 57 64 This is the same as the seventh value, 0!
Do the tenth and twelfth values correspond to the eighth value? Do the eleventh and thirteenth values correspond to the ninth value? All w of the form How is 0 the eighth value? How is 0 1! Are there any values of s for which surprise o s should succeed? What value is associated with r in 69 d. When r is fresh, surprise o r succeeds and leaves r fresh. Chapter 4 Write an expression that shows why this definition of surprise o should not succeed when r is fresh.
But if r were b, then rember o r a b c a b c should have failed, since removing b from the list a b c results in a c , not a b c. Please pass the aspirin!
Springer, , page What is the value of 3 a b c. The value is d e! Double Your Fun 61 Look closely at the definition of append; there are no questions asked about s. By this example run1 y fresh x append o cake with ice! Redefine append o to use a single cons o in place of the car o and cdr o see 4: Then we get cake with ice!
What list is this the same as? What is append cake with ice 0 1 2 The fourth list in frame What is the value of 23 run6 x fresh y append o x y cake with ice d t 64 Because z stays fresh. Chapter 5 How might we describe these values? How might we describe these values? The values include all of the suffixes of the list cake with ice d t. Each value includes two lists that, when appended together, form the list cake with ice d t.
What is the value of 29 It has no value, since it is still looking for the seventh value. Double Your Fun 65 How can we change the definition of append o so that is indeed what happens? Where do the last four values come from? A new fresh variable res is passed into each recursive call to append o.
After null o l succeeds, res is associated with s, which is the fresh variable z. Consider this definition. Back so soon? Hope you are not too full. The first value of the list seems right. In what way are the other values correct? And the last value is the fully-wrapped original list pizza.
What is the value of 48 It has no value. What can we do about that? Double Your Fun 69 Yes. Did you enjoy the pizza as much as we enjoyed the ice cream? Chapter 5 Consider this definition.
No surprises here. Which of the lists, if any, are the same? Here is a surprise! None of the lists are the same.
The second and third lists are the same. Chapter 5 The value in the previous frame contains fifteen lists. The value in the previous frame contains thirteen lists. Each list flattens to a b c. These are all the lists generated by attempting to flatten a b c.
Remember that a singleton list a is really the same as a!