All streams
Search
Write a publication
Pull to refresh
1
0
Дмитрий @dima_mendeleev

User

Send message
Список с функционального мира, а вектор с императивного, по-этому и оптимизированы под разные нужды. Это нужно учитывать.
То есть если часто нужно длину списка узнавать, не лучше ли воспользоваться вектором?
А природа то тоже одна. Не отбрасывайте другие.
Сколько тех знаний…
да и все равно — это знания о механизмах и причинах эволюции этого [ОДНОГО] элемента.
С вашей статьи этого ну никак не видно :)
Спасибо! Интересный материал, у меня кстати был выбор, что писать: merge или quck sort.
Но если честно мне синтаксис Agda больше нравиться чем Epigram. На самом деле я не сразу на Agda подсел. Была попытка с ATS, и длительное время сидел на Coq. Но Agda все же привлекает больше всего. Плюс заманчивая возможность через Haskell подключить C/C++ — боюсь даже представить, что может выйти.
Терраформирование Венеры?
А что если на Венере уже есть жизнь? Все эти бомбардировки бактериями, водой и еще чем-то там могут уничтожить ее!
> доп. биб.
:-D бомба!!!
*буду цитировать=)
А как такой вариант?
sort _ [] = []
sort _<_ (h :: t) = filter (\x -> x < h) t ++ h ++ filter (\x -> not (x < h)) t

sorted _ []  = true
sorted _ (_ :: [])  = true
sorted _<_ (x :: y :: t)  = ((x < y) || not (y < x)) && sorted _<_ (y :: t)
В этом случае согласен. Наверное зависимые типы и суровая жизнь заставили меня больше верить типу функции чем ее названию.
Действительно без определенных ограничений на функцию сравнения ничего не получится.
Все правильно, но все же мой пример не единственный при котором не нужно доказательство линейного порядка.
То есть, я только хочу сказать, что следующее утверждать нельзя:
> Без доказательства что cmp образует линейный порядок тоже ничего не получится
Вы не абстрагируетесь… Забудьте о том, что это функции сортировки.
> Без доказательства что cmp образует линейный порядок тоже ничего не получится
Это нельзя утверждать — и доказательство этому мой пример с предыдущего комментария.
Вообще то не обязательно. На эти функции нужно смотреть абстрагируясь от названий: задача доказать — а это значить построить терм. Обязательное тут, как я писал — это определения функций sort и sorted, пока этого не будет, ничего точно сказать нельзя. Вот например если так:
-- sort - любой
sorted _ _ = true
sort-sorts = refl

То есть без определений никак.
Простите, это сюда… пиво=)
Простите, я имел ввиду, спасибо:)
В данной ситуации обязательно нужно иметь определения функций sort и sorted, потому как с описанного типа много информации получить нельзя. И после уже можно проступать к доказательству — это весьма реально.
… пишешь \_1 получается ₁, пишешь \<=, получается ≤, пишешь \all или \forall, получается ∀.
Еще классно, что в agda-mode есть подсказки, типа intellisense.
надо с {-# OPTIONS --no-termination-check #-}
Это проблема Agda, она хуже определяет завершаемость (чем Coq) по-этому иногда эту опцию можно использовать.
еще можно с
{-# OPTIONS --no-termination-check #-}
Вообще-то зависает. Даже компиляция может зависнуть. Я вот для затычек такое использовал=)
Very-Bad: {A: Set} -> A
Very-Bad = Very-Bad

Information

Rating
Does not participate
Location
Украина
Registered
Activity