From 3c5fd625a53ad736c276df93e338aec2a73742ac Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 16 Oct 2023 13:59:49 +0200 Subject: [PATCH] vault backup: 2023-10-16 13:59:49 --- .obsidian/workspace.json | 13 ++++++------- Algo/Courses/Chapter 6 - Lists (Exercises).md | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 4bd9308..340eb50 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -31,8 +31,7 @@ } } } - ], - "currentTab": 1 + ] } ], "direction": "vertical" @@ -98,7 +97,7 @@ "state": { "type": "backlink", "state": { - "file": "Algo/Courses/Chapter 6 - Lists.md", + "file": "Algo/Courses/Chapter 6 - Lists (Exercises).md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -115,7 +114,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Algo/Courses/Chapter 6 - Lists.md", + "file": "Algo/Courses/Chapter 6 - Lists (Exercises).md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -138,7 +137,7 @@ "state": { "type": "outline", "state": { - "file": "Algo/Courses/Chapter 6 - Lists.md" + "file": "Algo/Courses/Chapter 6 - Lists (Exercises).md" } } }, @@ -169,10 +168,10 @@ "command-palette:Open command palette": false } }, - "active": "26919eaeae9a8f38", + "active": "eaf65669cfff2a2c", "lastOpenFiles": [ - "Algo/Courses/Chapter 6 - Lists (Exercises).md", "Algo/Courses/Chapter 6 - Lists.md", + "Algo/Courses/Chapter 6 - Lists (Exercises).md", "Algo/Séminaire/Chapter 1 - CAML basics.md", "Prog/Loops.md", "Algo/Séminaire/Chapter 5 - Recursivity.md", diff --git a/Algo/Courses/Chapter 6 - Lists (Exercises).md b/Algo/Courses/Chapter 6 - Lists (Exercises).md index e26a011..4892873 100644 --- a/Algo/Courses/Chapter 6 - Lists (Exercises).md +++ b/Algo/Courses/Chapter 6 - Lists (Exercises).md @@ -220,3 +220,19 @@ val reverse : 'a list -> 'a list = in rev [] l val reverse: 'a list -> 'a list = ``` + +## Exercise 3.6 +```Ocaml +let rec equals l = function + | [] when l = [] -> true + | [] -> false + | e::t -> if l = [] then false else (let e2::l2 = l in e = e2 + equal (l-1)) +val equals = 'a list -> 'a list -> bool = +``` + +## Exercise 3.7 +```Ocaml +let shared l1 l2 = function + | [] -> [] + | e::t -> let rec s l2 = function + |e::t ->