 
  		        Rope-a-dope
Programming Elixir 1.6: Exercise Solutions: Strings and Binaries-7
@pragdave
I think all the annoymous functions in the exercise solutions miss the “&” because we will get error: capture argument &1 must be used within the capture operator &.
The solution will have error:
Function read/1 has no local return.The function call will not succeed.
IO.stream(_file :: pid())
will never return since the 1st arguments differ
from the success typing arguments:
(:line | pos_integer())
def read(filename) do
file = File.open!(filename)
headers = read_headers(IO.read(file, :line))
Enum.map(IO.stream(file), &create_one_row(headers, &1))
end
Changing to this will be good. And it should be ~r for the regular expression.
defmodule SimpleCSV do
  def read(filename) do
    file = filename |> File.open!()
    headers = file |> IO.read(:line) |> read_headers()
    result =
      file
      |> IO.stream(:line)
      |> Enum.map(&create_one_row(headers, &1))
    File.close(file)
    result
  end
  defp read_headers(hdr_line) do
    from_csv_and_map(hdr_line, &String.to_atom(&1))
  end
  defp create_one_row(headers, row_csv) do
    row = from_csv_and_map(row_csv, &maybe_convert_numbers(&1))
    Enum.zip(headers, row)
  end
  defp from_csv_and_map(row_csv, mapper) do
    row_csv
    |> String.trim()
    |> String.split(~r{,\s*})
    |> Enum.map(mapper)
  end
  defp maybe_convert_numbers(value) do
    cond do
      Regex.match?(~r{^\d+$}, value) -> String.to_integer(value)
      Regex.match?(~r{^\d+\.\d+$}, value) -> String.to_float(value)
      <<?:::utf8, name::binary>> = value -> String.to_atom(name)
      true -> value
    end
  end
end
First Post!
 
		        pragdave
									Author and Publisher
			          
						Could you do me a favor: where are you seeing this code?
Popular Pragmatic Bookshelf topics
                         
                      
                       
          
                Working through the steps (checking that the Info,plist matches exactly), run the demo game and what appears is grey but does not fill th...
              
            
            
          
              New
 
          
                Hi, 
build fails on: 
bracket-lib = “~0.8.1” 
when running on Mac Mini M1 Rust version 1.5.0: 
Compiling winit v0.22.2 
error[E0308]: mi...
              
            
            
          
              New
 
          
                The generated iex result below should list products instead of product for the metadata. (page 67) 
iex> product = %Product{}
 %Pento....
              
            
            
          
              New
 
          
                The book has the same “Problem space/Solution space” diagram on page 18 as is on page 17.  The correct Problem/Solution space diagrams ar...
              
            
            
          
              New
 
          
                I’m not quite sure what’s going on here, but I’m unable to have to containers successfully complete the Readiness/Liveness checks. I’m im...
              
            
            
          
              New
 
          
                Is the book’s epub format available to read on Google Play Books?
              
            
            
          
              New
 
          
                Hey there, 
I’m enjoying this book and have learned a few things alredayd.  However, in Chapter 4 I believe we are meant to see the “>...
              
            
            
          
              New
 
          
                Title: Agile Web Development with Rails 7: (page 70) 
I am running windows 11 pro with rails 7.0.3 and ruby 3.1.2p20 (2022-04-12 revision...
              
            
            
          
              New
 
          
                I got this error when executing the plot files on macOS Ventura  13.0.1 with Python 3.10.8 and matplotlib 3.6.1: 
programming_ML/code/03_...
              
            
            
          
              New
 
          
                Hello faithful readers!  If you have tried to follow along in the book, you are asked to start up the dev environment via dx/build and ar...
              
            
            
          
              New
Other popular topics
                         
                      
                       
          
                SpaceVim seems to be gaining in features and popularity and I just wondered how it compares with SpaceMacs in 2020 - anyone have any thou...
              
            
            
          
              New
 
          
                Curious to know which languages and frameworks you’re all thinking about learning next :upside_down_face: 
Perhaps if there’s enough peop...
              
            
            
          
              New
 
          
                Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
              
            
            
              
          
              New
 
          
                Thanks to @foxtrottwist’s and @Tomas’s posts in this thread: Poll: Which code editor do you use? I bought Onivim! :nerd_face: 
https://on...
              
            
            
          
              New
 
          
                Author Spotlight 
Rebecca Skinner 
@RebeccaSkinner 
Welcome to our latest author spotlight, where we sit down with Rebecca Skinner, auth...
              
            
            
          
              New
New
 
          
                Author Spotlight: 
VM Brasseur 
@vmbrasseur 
We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
              
            
            
          
              New
 
          
                Author Spotlight: 
Peter Ullrich 
@PJUllrich 
Data is at the core of every business, but it is useless if nobody can access and analyze ...
              
            
            
          
              New
 
          
                Big O Notation can make your code faster by orders of magnitude. Get the hands-on info you need to master data structures and algorithms ...
              
            
            
              
          
              New
 
          
                Node.js v22.14.0 has been released. 
Link: Release 2025-02-11, Version 22.14.0 'Jod' (LTS), @aduh95 · nodejs/node · GitHub
              
            
            
              
          
              New
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /ruby
- /wasm
- /erlang
- /phoenix
- /keyboards
- /python
- /rails
- /js
- /security
- /go
- /swift
- /vim
- /clojure
- /emacs
- /haskell
- /java
- /svelte
- /onivim
- /typescript
- /kotlin
- /c-plus-plus
- /crystal
- /tailwind
- /react
- /gleam
- /ocaml
- /elm
- /flutter
- /vscode
- /ash
- /html
- /opensuse
- /centos
- /php
- /zig
- /deepseek
- /scala
- /lisp
- /textmate
- /sublime-text
- /react-native
- /nixos
- /debian
- /agda
- /kubuntu
- /arch-linux
- /django
- /revery
- /deno
- /ubuntu
- /spring
- /manjaro
- /nodejs
- /diversity
- /lua
- /julia
- /slackware
- /c
 
           
    





