machineInfoParser :: MachineName -> Parser MachineInfo
machineInfoParser mName = do
  string "MemTotal:"
  skipSpace
  mem <- decimal
  string " kB\n"
  ncpus <- decimal
  char '\n'
  productName <- takeWhile (/= '\n')
  char '\n'
  return $ MachineInfo mName (mem * 1024) ncpus productName
machineInfoParser :: MachineName -> Parser MachineInfo
machineInfoParser mName = do
  string "MemTotal:"
  skipSpace
  mem <- decimal
  string " kB\n"
  ncpus <- decimal
  char '\n'
  productName <- takeWhile (/= '\n')
  char '\n'
  return $ MachineInfo mName (mem * 1024) ncpus productName
machineInfoParser mName = do
  string "MemTotal:"
  skipSpace
  mem <- decimal
  string " kB\n"
  ncpus <- decimal
  char '\n'
  productName <- takeWhile (/= '\n')
  char '\n'
  return $ MachineInfo mName (mem * 1024) ncpus productName