code: func (l *list) Remove(pos uint) (PersistentList, error) {
  	if pos == 0 {
  		nl, _ := l.Tail()
  		return nl, nil
  	}
  
  	nl, err := l.tail.Remove(pos - 1)
  	if err != nil {
  		return nil, err
  	}
  	return &list{l.head, nl}, nil
  }
docs: // Remove will remove the item at the given position, returning the new list or
  // an error if the position is invalid.