feat(library/init/data/list/qsort): add temp qsort as meta definition
This commit is contained in:
parent
7eef501ae1
commit
4f3fd2cba6
2 changed files with 24 additions and 1 deletions
|
|
@ -4,4 +4,4 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Authors: Leonardo de Moura
|
||||
-/
|
||||
prelude
|
||||
import init.data.list.basic init.data.list.instances init.data.list.lemmas
|
||||
import init.data.list.basic init.data.list.instances init.data.list.lemmas init.data.list.qsort
|
||||
|
|
|
|||
23
library/init/data/list/qsort.lean
Normal file
23
library/init/data/list/qsort.lean
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
/-
|
||||
Copyright (c) 2017 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
Author: Leonardo de Moura
|
||||
-/
|
||||
prelude
|
||||
import init.data.list.basic
|
||||
|
||||
namespace list
|
||||
|
||||
/- TODO(Leo): remove meta as soon as equation compiler has support for well founded recursion.
|
||||
|
||||
This is based on the minimalist Haskell "quicksort".
|
||||
|
||||
Remark: this is *not* really quicksort since it doesn't partition the elements in-place -/
|
||||
meta def qsort {α} (lt : α → α → bool) : list α → list α
|
||||
| [] := []
|
||||
| (h::t) :=
|
||||
let small := filter (λ x, lt h x = ff) t,
|
||||
large := filter (λ x, lt h x = tt) t
|
||||
in qsort small ++ h :: qsort large
|
||||
|
||||
end list
|
||||
Loading…
Add table
Reference in a new issue