blob: 1f914b1a166e458c67c5694a2919c57add255575 (
plain)
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
|
module Util.List exposing (..)
import List
pop : List a -> (Maybe (a, List a))
pop l =
case
((List.head l), (List.tail l))
of
(Nothing, _) -> Nothing
(_ , Nothing) -> Nothing
((Just head), (Just tail)) -> (Just (head, tail))
get_first : (a -> Bool) -> (List a) -> (Maybe a)
get_first fun list =
(List.head (List.filter fun list))
product_map : (a -> b -> c) -> (List a) -> (List b) -> (List c)
product_map product_fun list_a list_b =
(product_map_rec (product_fun) list_a list_b [])
product_map_rec : (a -> b -> c) -> (List a) -> (List b) -> (List c) -> (List c)
product_map_rec product_fun list_a list_b result =
case (pop list_a) of
Nothing -> result
(Just (head, tail)) ->
(product_map_rec
(product_fun)
tail
list_b
(List.append
(List.map (product_fun head) list_b)
result
)
)
|