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