| Register | FAQ | Calendar | Search | Today's Posts | Mark Forums Read |
|
#1
| |||
| |||
| hi Please combine let* let letrec into super-let, (or simply let) for future consideration. I can not for my life see a reason for keeping "the other" "lets", other than the super-let (or simply let). Is there occassions why one would want "the other" "lets" other than super-let? If one word can mean three features, why not use the super version for brevity. Just a suggestion. |
|
#2
| |||
| |||
| "narutocanada@gmail.com" <narutocanada@gmail.com> writes: > hi > > Please combine let* let letrec into super-let, (or simply let) for > future consideration. > I can not for my life see a reason for keeping "the other" "lets", > other than the super-let (or simply let). Is there occassions why one > would want "the other" "lets" other than super-let? If one word can > mean three features, why not use the super version for brevity. Just a > suggestion. The semantics are not the same. First for simple values: > (let ((a 1) (b 2)) (let ((a 3) (b a)) (display (list a b)) (newline))) (3 1) > (let ((a 1) (b 2)) (let* ((a 3) (b a)) (display (list a b)) (newline))) (3 3) > (let ((a 1) (b 2)) (letrec ((a 3) (b a)) (display (list a b)) (newline))) (3 3) Next for functions: > (let ((a (lambda (x) 1)) (b (lambda (x) 2))) (let ((a (lambda (x) (if (< 0 x) (cons 3 (a (- x 1))) '(3)))) (b (lambda (x) (cons 4 (a x))))) (display (list (a 1) (b 1))) (newline))) ((3 . 1) (4 . 1)) > (let ((a (lambda (x) 1)) (b (lambda (x) 2))) (let* ((a (lambda (x) (if (< 0 x) (cons 3 (a (- x 1))) '(3)))) (b (lambda (x) (cons 4 (a x))))) (display (list (a 1) (b 1))) (newline))) ((3 . 1) (4 3 . 1)) > (let ((a (lambda (x) 1)) (b (lambda (x) 2))) (letrec ((a (lambda (x) (if (< 0 x) (cons 3 (a (- x 1))) '(3)))) (b (lambda (x) (cons 4 (a x))))) (display (list (a 1) (b 1))) (newline))) ((3 3) (4 3 3)) So, depending on the kind of results you want, you will choose one or the other. -- __Pascal Bourguignon__ http://www.informatimago.com/ Pour moi, la grande question n'a jamais été: «Qui suis-je? Où vais-je?» comme l'a formulé si adroitement notre ami Pascal, mais plutôt: «Comment vais-je m'en tirer?» -- Jean Yanne |
|
#3
| |||
| |||
| Pascal J. Bourguignon wrote: > "narutocanada@gmail.com" <narutocanada@gmail.com> writes: > >> hi >> >> Please combine let* let letrec into super-let, (or simply let) for >> future consideration. >> I can not for my life see a reason for keeping "the other" "lets", >> other than the super-let (or simply let). Is there occassions why one >> would want "the other" "lets" other than super-let? If one word can >> mean three features, why not use the super version for brevity. Just a >> suggestion. > > The semantics are not the same. > > First for simple values: > >> (let ((a 1) (b 2)) (let ((a 3) (b a)) (display (list a b)) (newline))) > (3 1) >> (let ((a 1) (b 2)) (let* ((a 3) (b a)) (display (list a b)) (newline))) > (3 3) >> (let ((a 1) (b 2)) (letrec ((a 3) (b a)) (display (list a b)) (newline))) > (3 3) True, but I can imagine the OP thought about using the letrec semantics for everything (at least that's what I'd suggest). What's a real-world (not examples as above) benefit of having a simple (let) that can not be achieved easily with (letrec)? Or is the main benefit of (let) to allow better optimization as its semantics is simpler? Yours, Daniel -- Done: Arc-Bar-Cav-Sam-Val-Wiz, Dwa-Elf-Gno-Hum-Orc, Law-Neu-Cha, Fem-Mal To go: Hea-Kni-Mon-Pri-Ran-Rog-Tou |
|
#4
| |||
| |||
| In article <f22087d8-22b2-4dc6-bddd-a83b69bd6df5@p31g2000prf.googlegroups.com>, narutocanada@gmail.com <narutocanada@gmail.com> wrote: > Please combine let* let letrec into super-let, (or simply let) for > future consideration. Would letrec* fill your needs? It's supported by a number of implementations, and it's also in R6RS: http://www.r6rs.org/final/html/r6rs/...l#node_idx_406 Lauri |
|
#5
| |||
| |||
| On Aug 26, 6:19 pm, "narutocan...@gmail.com" <narutocan...@gmail.com> wrote: > hi > > Please combine let* let letrec into super-let, (or simply let) for > future consideration. > I can not for my life see a reason for keeping "the other" "lets", > other than the super-let (or simply let). Is there occassions why one > would want "the other" "lets" other than super-let? If one word can > mean three features, why not use the super version for brevity. Just a > suggestion. PLT Scheme has let+, which combines let, let*, letrec, letrec*, let- values, let*-values letrec-values and letrec*-values. See http://docs.plt-scheme.org/mzlib/mzl...etc..ss)._let+)) Jos |
|
#6
| |||
| |||
| On Aug 26, 12:19 pm, "narutocan...@gmail.com" <narutocan...@gmail.com> wrote: > hi > > Please combine let* let letrec into super-let, (or simply let) for > future consideration. > I can not for my life see a reason for keeping "the other" "lets", > other than the super-let (or simply let). Is there occassions why one > would want "the other" "lets" other than super-let? If one word can > mean three features, why not use the super version for brevity. Just a > suggestion. The use of the various kinds of let, as opposed to a single super-let, can give the reader valuable clues about the nature of your program. Letrec has different scoping rules than let. Using super-let would confuse the reader about the intentions of the author. |
|
#7
| |||
| |||
| On Aug 27, 9:54*am, Phil Bewig <pbe...@gmail.com> wrote: > The use of the various kinds of let, as opposed to a single super-let, > can give the reader valuable clues about the nature of your program. > Letrec has different scoping rules than let. *Using super-let would > confuse the reader about the intentions of the author. I agree. It's good specialization and I believe that also leads to more efficient implementations. |
![]() |
| Thread Tools | |
| Display Modes | |
In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.