diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 0c77830..38e2f82 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -44,7 +44,7 @@ } } ], - "currentTab": 2 + "currentTab": 1 } ], "direction": "vertical" @@ -111,7 +111,7 @@ "state": { "type": "backlink", "state": { - "file": "Code CAML.md", + "file": "Algo/Courses/Chapter 7 - High Order (exercises).md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -128,7 +128,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Code CAML.md", + "file": "Algo/Courses/Chapter 7 - High Order (exercises).md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -151,7 +151,7 @@ "state": { "type": "outline", "state": { - "file": "Code CAML.md" + "file": "Algo/Courses/Chapter 7 - High Order (exercises).md" } } }, @@ -182,14 +182,14 @@ "command-palette:Open command palette": false } }, - "active": "fb961d7dbdf1ec74", + "active": "26919eaeae9a8f38", "lastOpenFiles": [ - "Algo/Courses/Chapter 7 - High Order (exercises).md", + "Algo/CM/CM du 04 octobre.md", "Code CAML.md", + "Algo/Courses/Chapter 7 - High Order (exercises).md", "Algo/Courses/Chapter 6 - Lists (Exercises).md", "Algo/Courses/Chapter 6 - Lists.md", "Algo/Séminaire/Chapter 5 - Recursivity.md", - "Algo/CM/CM du 04 octobre.md", "Algo/CM/CM du 27 septembre.md", "Algo/Séminaire/Chapter 3 - Case analysis.md", "Algo/Séminaire/Chapter 2 - Functions.md", diff --git a/Algo/Courses/Chapter 7 - High Order (exercises).md b/Algo/Courses/Chapter 7 - High Order (exercises).md index 2f12404..0c4cc9f 100644 --- a/Algo/Courses/Chapter 7 - High Order (exercises).md +++ b/Algo/Courses/Chapter 7 - High Order (exercises).md @@ -57,3 +57,21 @@ val exists: (bool -> bool) -> bool list -> bool = ``` ## Ex 2.5 +```Ocaml +# let rec filter p : function + | [] -> [] + | e::t -> if p e then + e::filter p t + else filter p t;; +val filter: ('a -> bool) -> 'a list -> 'a +``` + +## Ex 2.6 +```Ocaml +let rec partition p l = + match l with + | [] -> ([], []) + | h==t> let (l1, l2) = partition p t in + if p h then (h::l1,l2) + else (l1, h::l2);; +val partition : ('a -> bool) -> 'a list -> 'a list * 'a list = \ No newline at end of file