go-scopes/lib/funky/funky.go

27 lines
381 B
Go

package funky
type Maybe[V any] interface {
IsNothing() bool
Value() V
}
type maybe[V any] struct {
isNothing bool
value V
}
func Nothing[V any]() Maybe[V] {
return &maybe[V]{isNothing: true}
}
func Just[V any](v V) Maybe[V] {
return &maybe[V]{false, v}
}
func (m *maybe[V]) IsNothing() bool {
return m.isNothing
}
func (m *maybe[V]) Value() V {
return m.value
}