guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: C++ declaration style programming?


From: Issac Trotts
Subject: Re: C++ declaration style programming?
Date: Tue, 20 Jan 2004 20:57:35 -0800
User-agent: Mutt/1.5.4i

On Tue, Jan 20, 2004 at 11:17:34PM +0100, Han-Wen Nienhuys wrote:
> 
> Hi there,
> 
> I just realized that one of the things that I dislike about Scheme is
> that my habit of naming intermediate results (which I inherited from
> C++) leads to deep nesting.
> 
> Usually in C++, I do
> 
>   int var1 = something ();
>   int var2 = something (var1);  
>   int var3 = something (var1, var2);  
>     etc.
> 
> in Scheme, this translates quite well to (let* ) :
> 
> (let*
>   ((var1 (something))
>    (var2 (something var1))
>    (var3 (something var1 var2)))
>   .. )
> 
> However, it doesn't work so well when I mix commands with
> declarations, eg.
> 
> 
>   int var1 = something ();
>   var1 += 2; 
>   int var2 = something (var1);
>   var2 += var1;
>   int var3 = something (var1, var2);  
>     etc.

Well, in this case you could do something more functional:

(define (something . x) 1)
(let*
  ((var1 (+ 2 (something)))
   (var2 (+ (something var1) var1))
   (var3 (something var1 var2)))
  (display `(,var1 ,var2 ,var3)))

> This can presumably be done by writing a macro begin-let* that expands
> the statement list in a suitably nested let*
> 
> However, I was wondering whether there exists a standard library
> syntax mechanism that lets me write code in this fashion.
> 
> -- 
> 
>  Han-Wen Nienhuys   |   address@hidden   |   http://www.xs4all.nl/~hanwen 
> 
> 
> 
> _______________________________________________
> Guile-user mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/guile-user

-- 
Issac Trotts
http://redwood.ucdavis.edu/~issac





reply via email to

[Prev in Thread] Current Thread [Next in Thread]