some(1).zip(some(true)) // Some([1, true])
some(1).zip(none) // None
none.zip(some(1)) // None
none.zip(none) // None
const formatAddress =
(streetName?: string, streetNumber?: number): string =>
opt(streetName).zip(opt(streetNumber)).map(join(' ')).orElse('');
formatAddress('Strawberry', '12') // 'Strawberry 12'
formatAddress('Strawberry', undefined) // ''
formatAddress(undefined, '12') // ''
formatAddress(undefined, undefined) // ''
Joins two optional values to a pair. If either of them is None then the result is None.