June 2018 Update

This commit is contained in:
Ingy döt Net 2018-06-22 20:57:24 +00:00
parent ba8067c3b7
commit 22f33d4004
5278 changed files with 84726 additions and 14379 deletions

View file

@ -0,0 +1,27 @@
(tc +)
(define swap
{ (vector number) --> number --> number --> (vector number) }
A I1 I2 -> (let Z (<-vector A I1)
(do (vector-> A I1 (<-vector A I2))
(vector-> A I2 Z))))
(define one-pass
{ (vector number) --> number --> boolean --> number --> boolean }
A N Swapped N -> (do (if (> (<-vector A (- N 1)) (<-vector A N))
(swap A (- N 1) N))
Swapped)
A N Swapped I -> (if (> (<-vector A (- I 1)) (<-vector A I))
(do (swap A (- I 1) I)
(one-pass A N true (+ I 1)))
(one-pass A N Swapped (+ I 1))))
(define bubble-h
{ boolean --> (vector number) --> number --> (vector number) }
true A N -> (bubble-h (one-pass A N false 2) A N)
false A N -> A)
(define bubble-sort
{ (vector number) --> (vector number) }
A -> (let N (limit A)
(bubble-h (one-pass A N false 2) A N)))

View file

@ -0,0 +1,12 @@
(datatype some-globals
__________
(value *arr*) : (vector number);)
(set *arr* (vector 5))
(vector-> (value *arr*) 1 5)
(vector-> (value *arr*) 2 1)
(vector-> (value *arr*) 3 4)
(vector-> (value *arr*) 4 2)
(vector-> (value *arr*) 5 8)
(bubble-sort (value *arr*))

View file

@ -0,0 +1,11 @@
(tc +)
(define bubble-shot
{ (vector number) --> (vector number) }
(@v A <>) -> (@v A <>)
(@v A B R) -> (@v B (bubble-shot (@v A R))) where (> A B)
(@v A R) -> (@v A (bubble-shot R)))
(define bubble-sort
{ (vector number) --> (vector number) }
X -> (fix (function bubble-shot) X))

View file

@ -0,0 +1 @@
(bubble-sort (@v 5 1 4 2 3 <>))