Hacker News new | ask | show | jobs
by masklinn 5347 days ago
You still have a dot in there!

    greetABunchOfPeople List<String> people
        people do
            _ sayHello println
1 comments

You left a type in there!

    greetABunchOfPeople people
        people do
            _ sayHello println
While we're at it, let's switch to haskell (delete the unnecessary people argument):

  greetABunchOfPeople = mapM_ (putStrLn . sayHello)
Explanation:

mapM_ is a function that takes two arguments.

  mapM_ lambda list
It calls lambda on each element on list.

In the greetABunchOfPeople definition, notice we only gave mapM_ 1 argument instead of 2. That means greetABunchOfPeople would have to take an extra argument for the call to execute.

  greetABunchOfPeople $MISSING$ = mapM_ (putStrLn . sayHello) $MISSING$
You beat me to it.

What I love about the Haskell version is it says only exactly what needs to be said.

sayHello - get the hello message for something. putStrLn - send something to stdout mapM_ - Do these things in sequence, I don't care about the result.

Together they say take a list of people, get their greeting strings and print them to stdout in order. It's hard to say it more succinctly without making things confusingly implicit.