Data List['t]
{
List = c_nil ++ 't * List['t].c_cons;
}

Scheme Fact
{

@ = 60000.RandomList(-999999,999999).QSort;


Fun RandomList[Max, Min]
{
@ = (id * 0).equal -> c_nil,
((Min * (rand * (Max * Min).sub).mul).add * (id * 1).sub.RandomList).c_cons;
}


Fun QSort
{
@ = ~c_nil -> c_nil,
(((id*Pivot).Filter(less).QSort * (id*Pivot).Filter(equal)).Concat * (id*Pivot).Filter(greater).QSort).Concat;

Fun Filter[fPredicate]
{
@ = [1].~c_nil -> c_nil,
[1].~c_cons -> Args.(([1]*[3]).fPredicate -> ([1] * ([2]*[3]).Filter).c_cons, ([2]*[3]).Filter);

Args = [1].~c_cons * [2];
}


// Возвращает опорный элемент (первый в списке).
Pivot = id.~c_cons.[1];

Concat = [1].~c_nil -> [2],
[2].~c_nil -> [1],
([1].~c_cons.[1] * ([1].~c_cons.[2]*[2]).Concat).c_cons;

}

}

Application
% Fact





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.