aboutsummaryrefslogtreecommitdiffstats
path: root/stack.go
blob: 1a52e94cb73d5d0505fb6841ba25615ce0570e9b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package main

type Stack []float64

func (s *Stack) push(v float64) {
	*s = append(*s, v)
}

func (s *Stack) pop() (float64, error) {
	if len(*s) > 0 {
		v := (*s)[len(*s)-1]
		*s = (*s)[:len(*s)-1]
		return v, nil
	}
	return 0, EmptyStackErr{}
}

type EmptyStackErr struct{}

func (e EmptyStackErr) Error() string {
	return "empty stack"
}