blob: 2403683de36eeb1aed4359bf7cc8fbfbfccb0bcb (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
definition module StdMaybe
// ********************************************************************************
// Clean StdLib library module, version 1.0
// ********************************************************************************
from StdFunc import :: St;
from StdOverloaded import class ==(..);
:: Maybe x
= Just x
| Nothing
isJust :: !(Maybe .x) -> Bool // case @1 of (Just _) -> True; _ -> False
isNothing :: !(Maybe .x) -> Bool // not o isJust
fromJust :: !(Maybe .x) -> .x // \(Just x) -> x
// for possibly unique elements:
u_isJust :: !u:(Maybe .x) -> (!Bool, !u:Maybe .x)
u_isNothing :: !u:(Maybe .x) -> (!Bool, !u:Maybe .x)
accMaybe :: .(St .x .a) !u:(Maybe .x) -> (!Maybe .a,!u:Maybe .x)
// accMaybe f (Just x) = (Just (fst (f x)),Just (snd (f x)))
// accMaybe f Nothing = (Nothing,Nothing)
mapMaybe :: .(.x -> .y) !(Maybe .x) -> Maybe .y
// mapMaybe f (Just x) = Just (f x)
// mapMaybe f Nothing = Nothing
instance == (Maybe x) | == x
// Nothing==Nothing
// Just a ==Just b <= a==b
maybeToList :: !(Maybe .a) -> [.a];
// returns list with no or one element
listToMaybe :: ![.a] -> .Maybe .a;
// returns Just head of list if possible
catMaybes :: ![Maybe .a] -> .[.a];
// catMaybes ms = [ m \\ Just m <- ms ]
|