# fromMaybe

The fromMaybe function takes a default value and a Maybe value. If the Maybe is Nothing, it returns the default value; otherwise, it returns the value contained in the Maybe.

#### Examples

Basic usage:
```>>> fromMaybe "" (Just "Hello, World!")
"Hello, World!"
```
```>>> fromMaybe "" Nothing
""
```
Read an integer from a string using readMaybe. If we fail to parse an integer, we want to return 0 by default:
```>>> import Text.Read ( readMaybe )

5

0
```
The fromMaybe function takes a default value and and Maybe value. If the Maybe is Nothing, it returns the default values; otherwise, it returns the value contained in the Maybe.

#### Examples

Basic usage:
```>>> fromMaybe "" (Just "Hello, World!")
"Hello, World!"
```
```>>> fromMaybe "" Nothing
""
```
Read an integer from a string using readMaybe. If we fail to parse an integer, we want to return 0 by default:
```>>> import Text.Read ( readMaybe )

5

0
```
Given a default value and a Maybe, yield the default value if the Maybe argument is Nothing and extract the value out of the Just otherwise.
The fromMaybe function takes a default value and and Maybe value. If the Maybe is Nothing, it returns the default values; otherwise, it returns the value contained in the Maybe.

#### Examples

Basic usage:
```>>> fromMaybe "" (Just "Hello, World!")
"Hello, World!"
```
```>>> fromMaybe "" Nothing
""
```
Read an integer from a string using readMaybe. If we fail to parse an integer, we want to return 0 by default:
```>>> import Text.Read ( readMaybe )

5

0
```
Return the value of an optional value. The default is returned if Nothing. Compare to fromJust.
```>>> fromMaybe 2 (sNothing :: SMaybe Integer)
2 :: SInteger

>>> fromMaybe 2 (sJust 5 :: SMaybe Integer)
5 :: SInteger

>>> prove \$ \x -> fromMaybe x (sNothing :: SMaybe Integer) .== x
Q.E.D.

>>> prove \$ \x -> fromMaybe (x+1) (sJust x :: SMaybe Integer) .== x
Q.E.D.
```
Lift a column over a Maybe. For example, if some people have houses and some do not, the data that pairs them together could be represented as:
```>>> :{
let owners :: [(Person,Maybe House)]
owners =
[ (Person "Jordan" 18, Nothing)
, (Person "Ruth" 25, Just (House Red 125000))
, (Person "Sonia" 12, Just (House Green 145000))
]
:}
```
The column encodings defined earlier can be reused with the help of fromMaybe:
```>>> :{
colOwners = mconcat
[ lmap fst colPerson
, lmap snd (fromMaybe "" colHouse)
]
:}
```
```>>> putStr (ascii colOwners owners)
+--------+-----+-------+---------+
| Name   | Age | Color | Price   |
+--------+-----+-------+---------+
| Jordan | 18  |       |         |
| Ruth   | 25  | Red   | \$125000 |
| Sonia  | 12  | Green | \$145000 |
+--------+-----+-------+---------+
```
Convert between Nothing and a default value, or Just and its value (not a true bijection).
fromMaybe default m is the a in m if it exists and the default otherwise
The fromMaybe function takes a default value and and Maybe value. If the Maybe is Nothing, it returns the default values; otherwise, it returns the value contained in the Maybe.

#### Examples

Basic usage:
```>>> fromMaybe "" (Just "Hello, World!")
"Hello, World!"
```
```>>> fromMaybe "" Nothing
""
```
Read an integer from a string using readMaybe. If we fail to parse an integer, we want to return 0 by default:
```>>> import Text.Read ( readMaybe )