Missing something when going through the Little Elixir book. Made my own function to grab a csv and make weather requests.
The result is the result of the first operation (a correct temperature response from a service, followed by the cities list. I expected a list of outputs only. Any pointers?
def get_cities_weather(csv_path) do
alias NimbleCSV.RFC4180, as: CSV
cities = csv_path
|> File.stream!
|> CSV.parse_stream
|> Stream.map(fn [city, city_ascii, lat, lng, pop, country, iso2, iso3, province] ->
%{name: city_ascii, lat: lat, lng: lng}
end)
cities
|> Enum.map_every(500, fn city ->
Metex.Worker.temperature_of(city)
end)
I don’t know what exactly you want to achieve, but there’s Enum.into if you want to convert these maps into lists and - most of all - there’s Enum.to_list for converting stream into list.
OH! It’s just returning the original input if it skips it… I was not thinking of that. In my head it was going to even return every 500th item… Thanks for pointing it out.
But an important one! I thought if enumerable is the right word here quite a moment. Names are hard especially if you have to deal an remember the relations between similar names.