inhabited get function. Returns a if the input is some a, otherwise returns default.
guard p a returns some a if p a holds, otherwise none.
filter p o returns some a if o is some a and p a holds, otherwise none.