Deutsch   English   Français   Italiano  
<vaufic$u2ps$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: "B. Pym" <Nobody447095@here-nor-there.org>
Newsgroups: comp.lang.lisp,comp.lang.scheme
Subject: Haskell
Date: Sat, 31 Aug 2024 07:09:04 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 40
Message-ID: <vaufic$u2ps$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Sat, 31 Aug 2024 09:09:05 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="cd5bad8e55b4aa82d833cd99ecb8f893";
	logging-data="985916"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19jEJ0NBK43BzjmiBcko8lZ"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:s4ZanRBqbqpFFoiyEuvum/Jfk6Q=
Bytes: 1819

Frank Buss wrote:

> Barry Margolin wrote: 
> > Which reminds me, where's the obligatory Haskell response? 
> 
> No problem :-) 
> 
> Assuming this is what was intended by the OP: 
> 
> (let (res) 
>   (dotimes (i 11 (nreverse res)) 
>    (dotimes (j 11) 
>     (push (+ i j) res)))) 
> 
> This is a solution in Haskell: 
> 
> [x + y | x <- [0..10], y <- [0..10]] 
> 

It's shorter in Gauche Scheme than in Haskell.

(use srfi-42) ; list-ec

(list-ec (: x 11) (: y 11) (+ x y))

Can it be done with a single "do*"?

(do* ((r '())
      (j 0 (mod (+ j 1) 11))
      (i 0 (if (zero? j) (+ 1 i) i)))
  ((= 11 i)  (reverse r))
  (push! r (+ i j)))

(0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 2 3 4 5 6 7 8 9
 10 11 12 3 4 5 6 7 8 9 10 11 12 13 4 5 6 7 8 9 10 11 12 13 14
 5 6 7 8 9 10 11 12 13 14 15 6 7 8 9 10 11 12 13 14 15 16 7 8 9
 10 11 12 13 14 15 16 17 8 9 10 11 12 13 14 15 16 17 18 9 10 11
 12 13 14 15 16 17 18 19 10 11 12 13 14 15 16 17 18 19 20)