code: func Cat(filenames ...string) Filter {
  	return FilterFunc(func(arg Arg) error {
  		if len(filenames) == 0 {
  			for s := range arg.In {
  				arg.Out <- s
  			}
  			return nil
  		}
  		for _, f := range filenames {
  			file, err := os.Open(f)
  			if err == nil {
  				err = splitIntoLines(file, arg)
  				file.Close()
  			}
  			if err != nil {
  				return err
  			}
  		}
  		return nil
  	})
  }
docs: // Cat emits each line from each named file in order. If no arguments
  // are specified, Cat copies its input to its output.