3 ms·
or allow returning multiple values. for example in CL searching for a thing returns two values the is-found and the value
by alaaalawi 7y ago
or allow returning multiple values. for example in CL searching for a thing returns two values the is-found and the value
- uryga 7y ago...which, btw, is equivalent to Maybe/Either – they're tagged unions, i.e. pairs (tag, content). Maybe<T> is isomorphic* to { has_value: bool, val: T|nil } * well, this representation is a bit too permissive, since you could do {has_value: true, val: nil} if you wanted to get the types water-tight, you'd need dependent types, typing it as dependent pair: Maybe<T> = sigma (has_value: bool) if has_value then T else () which can then only have values (false, ()) or (true, <actual value of type T>)
- coldtea 7y agoWhich is the same thing, but in an ad-hoc way, and leaves it open to the developer to check or not, and thus to crash.