[Haskell-cafe] Re: New slogan for haskell.org

Laurent Deniau laurent.deniau at cern.ch
Wed Nov 28 12:16:55 EST 2007


apfelmus wrote:
> Henning Thielemann wrote:
>> apfelmus wrote:
>>
>>> Back then, I was given the task to calculate some sequence
>>> of numbers which I did in one page of C code. So far so good, but when I
>>> asked the task assigner about his solution, he responded: "Ah, this
>>> problem, that's 1 line in Haskell. Well, 2 lines if the terminal is too
>>> small."
>>
>> Ah, a Haskell code contribution to the Encyclopedia of Integer Sequences?
> 
> The task was just for fun, but it's sequence A050000.

import Data.Set

xs = let f x m = x: let y = x `div` 2
                     in f (if member y m then 3*x else y) (insert x m)
      in f 1 (singleton 0)

> As said, it's two lines if the terminal is too small :)

I can't see how it could be one page of C unless the page is 10 lines 
long ;-) The following code is the direct translation of your Haskell 
code (except that it prints the result instead of building a list).

a+, ld.

#include <stdio.h>
#include <intset.h>

void f(int x, intset s) {
   printf("%d, ", x);
   f (intset_elem(s, x/2) ? 3*x : x/2, intset_put(s, x));
}

int main(void) {
   f (1, intset_put(intset_new(), 0));
}



More information about the Haskell-Cafe mailing list