package main import "errors" // Helper functions for slices, to make them behave more like stacks func peek[T any](s []T) (T, error) { if len(s) < 1 { return *new(T), errors.New("Stack empty") } return s[len(s)-1], nil } func pop[T any](sp *[]T) T { to_return := (*sp)[len(*sp)-1] *sp = (*sp)[:len(*sp)-1] return to_return }