:- use_module(library(maybe)). % staff(Name, Spouse) staff(tom, just(teresa)). staff(bob, nothing). staff(sue, just(william)). ?- staff(Name, MaybeSpouse), maybe_default_value(MaybeSpouse, '(none)', Spouse). Name = tom, Spouse = teresa ; Name = bob, Spouse = '(none)' ; Name = sue, Spouse = william.
maybe type encapsulates an optional value. When a value is present, we have
just(Value). When it's absent we have
nothing. In some circumstances, this can be a more natural model than using Prolog failure. For example, one might model a nullable SQL column using
This module draws inspiration from similar libraries for Mercury and Haskell. We make predicates available even where it's clearer to use unification. That facilitates using maybe values with
maplist and friends.
In addition to the predicates described below, this module defines clauses for the multifile predicate
error:has_type/2 which describe the type
maybe(T) where T is a type parameter. It also defines clauses for working with library(quickcheck).
Using SWI-Prolog 6.3 or later:
This module uses semantic versioning.
Source code available and pull requests accepted at http://github.com/mndrix/maybe
|default_maybe_value/3||Like maybe_default_value/3 with different argument order.|
|is_just/1||True if Maybe is |
|is_nothing/1||True if Maybe is |
|just_value/2||True if Just wraps Value.|
|map_maybe/3||True if |
|maybe_default_value/3||True if Maybe wraps Value with a Default for the |
|maybe_list/2||Relates a List to a Maybe value.|
|maybe_value/2||True if Maybe is |