<snip>
Speaking of Vladimir, it was Vladimir who had recommended a book Structure And Interpretation of Computer Programs that was instrumental in pushing my lispin' knowledge to the next level. It really changed the landscape for me and "took the reigns and blinders completely off" so to speak (tho I've still lots to learn). I don't know what ever happened to Vladimir, he stopped posting to the ngs long ago (as did Mr. Urban) but I'm sure he excelled at whatever he set his mind to and I'm grateful to this day that he mentioned said book. Thank you Vladimir.
<snip>
I spoke to him a little bit ago and he said hes still doing a little AutoLisp and C++ but mostly hes into Prolog and Haskel now. He said hes still doing some Scheme too.
Oh yes I agree, that man is amazing. I study his code for days trying to catch all the little neuonces about it. I think im still working on his (Or was it Reni's) Backquoting. I pick it up every once and a while, only to put it down with a hurting head. *smile*
Recursion is a beast. Just when you think you "have it" you learn something new. Just when you think you understand how stack-calls &or info works you get smoked with a weird result in some seeming simple app that throws you back to the begining.
Lately, all the recursion I use is as a simple loop if you will. For instance: (This is the first one I came accross when I searched upwards in my junk file ...its been awhile since ive played arround *huh*)
(defun my-getpoint ( pt str / a getpt )
;; a general getpoint function for a test I am running.
;; Se7en
;; 02.24.06
;;
;; Just a getpoint function that uses grread so that I can tell
;; if the user right clicks.
;; I am going to STOP the right click for now, I want to add the
;; ability to do somethign when the user right clicks later.
(if (eq pt 'nil)
(set 'getpt (getpoint str))
(set 'getpt (getpoint pt str)))
(setq a (grread getpt 2))
(if (and a (not (= (car a) 12)))
(cadr a)
(my-getpoint pt str)) )
But what all that garbage is doing is something simple like this: If a condition isnt met, do it again. That simple.(This is obviously a bit diff int functionality, but the recurstion is the same.)
(defun my-getpoint ( / a )
(setq a (getpoint "\nPlease pick a point: "))
(if a
a
(my-getpoint)
)
)
As MP said, this makes it easier on me to write. (Less code)
SICP is an awesome book. I refer to it constantly. Im always studing that book. I would bet I refer to it at least twice a week. (Well I guess its been about a month since ive actualy played arround with code but when im goofing arround with code I do.)