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

Re: macros vs. blocks

> List comprehensions make a good example. Consider the following
> bit of Haskell code:  
> [ (a, b) | a <- as, b <- bs, a < b ]

and a hypothetical Scheme + blocks version:

> (foldl [a acc:
>        (foldl [b acc: (if (< a b) (cons (pair a b) acc) acc)] acc bs)]
>       '() 
>       as)

but the latter's a strawman.  Why not write
it more like Thmalltalk?

	(collect [(a b) | (< a b)] (cart-product as bs))

or maybe even:

	(cart-product #:when [a b | (< a b)] as bs)


(have all the examples of potentially
non-blockable macros so far been cases
of punning, treating something as both
code and data?)