27 lines
381 B
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
|
|
}
|