diff --git a/docs/sophia_stdlib.md b/docs/sophia_stdlib.md index 8b7138b..219b27c 100644 --- a/docs/sophia_stdlib.md +++ b/docs/sophia_stdlib.md @@ -1216,7 +1216,7 @@ List.unzip(l : list('a * 'b)) : list('a) * list('b) Opposite to the `zip` operation. Takes a list of pairs and returns pair of lists with respective elements on same indices. -### merge +#### merge ``` List.merge(lesser_cmp : ('a, 'a) => bool, l1 : list('a), l2 : list('a)) : list('a) ``` @@ -1224,7 +1224,7 @@ List.merge(lesser_cmp : ('a, 'a) => bool, l1 : list('a), l2 : list('a)) : list(' Merges two sorted lists into a single sorted list. O(length(l1) + length(l2)) -### sort +#### sort ``` List.sort(lesser_cmp : ('a, 'a) => bool, l : list('a)) : list('a) ``` diff --git a/priv/stdlib/List.aes b/priv/stdlib/List.aes index 9493037..cf9670e 100644 --- a/priv/stdlib/List.aes +++ b/priv/stdlib/List.aes @@ -80,6 +80,7 @@ namespace List = * `b` only if `(b - a) mod step == 0`. `step` should be bigger than 0. */ function from_to_step(a : int, b : int, s : int) : list(int) = + require(s > 0, "List.from_to_step: non-positive step") from_to_step_(a, b - (b-a) mod s, s, []) private function from_to_step_(a : int, b : int, s : int, acc : list(int)) : list(int) = if(b < a) acc