@haskellru

Страница 1215 из 1551
Dmitry
22.05.2018
13:43:13
Дак зачем на всех наборах проверять? Это худший случай, когда не удалось внутри всё посворачивать.

Yuriy
22.05.2018
13:43:25
пока человечество научилось решать проблему останова только для специально ограниченных нетьюринговых машин (языков)

Dmitry
22.05.2018
13:43:39
Суперкомпиляторы ж как-то более-менее сворачивают программки?

Google
Dmitry
22.05.2018
13:44:42
Ну невезение -- оно постоянно? Или только время от времени встречается?

Yuriy
22.05.2018
13:45:36
понимаешь разницу между ∃ и ∀?

Dmitry
22.05.2018
13:45:48
Ну немного

И что?

Я ж пишу про ограниченный вход и ограниченное время проверки.

dimiii
22.05.2018
13:46:49
Отставить токсичность! Меня вот, например и нетьюринговые устраивают

Pineapple
22.05.2018
13:47:15
не всегда. как повезёт
Тут интересно распределение невезения.

Yuriy
22.05.2018
13:47:18
проверить останов некоторых МТ можно. проверить останов всех МТ — вообще всех возможных — нельзя

Dmitry
22.05.2018
13:47:48
Да я и не хочу проверять все МТ

Yuriy
22.05.2018
13:47:56
Тут интересно распределение невезения.
при любом распределении проблема останова не разрешима

Google
Dmitry
22.05.2018
13:50:03
Ну ладно, упрощу вопрос. Можете привести примеры, скажем так, "практических функций", например, из стандартной библиотеки Хаскеля, на которой проверяльщик зациклится?

Т.е., если я пишу очередную опердень, насколько вероятно, что её нельзя будет проверить проверяльщиком завершённости?

(предположим, что библиотеки и фреймворки, которые я при этом использую, каким-то образом верифицированы)

Yuriy
22.05.2018
13:54:20
универсального проверяльщика нет, и не может быть, как известно

если опердень — веб-сервер, то она по ТЗ должна работать вечно, то есть точно не завершается

Pineapple
22.05.2018
13:56:38
при любом распределении проблема останова не разрешима
На 100% нет, а скажем на 90% — уже практически полезно, 99% — отлично

Dmitry
22.05.2018
13:57:06
Да

Ну вот нашёл инструменты: http://termination-portal.org/wiki/Category:Tools

Ну и сам сайт интересный, кажется.

Yuriy
22.05.2018
13:58:51
из стандартной библиотеки, например, map не завершимая

Евгений
22.05.2018
13:58:54
Ну всё довольно просто же. Есть разнообразные классы алгоритмов, для каждого из которых есть более сложная функция (не входящая в этот класс процедур), и соответсвующая ей очень сложная синтаксическая структура. Чем более широкий класс процедур рассматриваем, тем сложнее синтаксическая структура.

Dmitry
22.05.2018
13:59:30
Евгений
22.05.2018
13:59:45
У большинства функций вход бесконечный

Yuriy
22.05.2018
13:59:54
Евгений
22.05.2018
14:00:36
На практике функции из конечных множеств в конечные множества никому не нужны

Если вы не свойства группы монстра изучаете

Pineapple
22.05.2018
14:01:46
На практике у нас все множества конечные

Dmitry
22.05.2018
14:01:54
На 100% нет, а скажем на 90% — уже практически полезно, 99% — отлично
Я вообще вот именно про это говорил. Сделаем проверяльщик. Да, он не тотален. Будем натравливать его на программы и давать ему, к примеру, час времени. Если справился за час -- значит, ставим на программу шильдик "проверена". Вот и всё. Спрашивается, насколько он будет полезен? Если он за час сможет проверять кучу полезных программ, то и пусть себе будет нетотальным.

Google
Евгений
22.05.2018
14:02:12
На практике у нас все множества конечные
На практике все множества бесконечные

Pineapple
22.05.2018
14:02:20
???

Yuriy
22.05.2018
14:02:25
На практике функции из конечных множеств в конечные множества никому не нужны
ну почему же? в БД конечно таблиц, в таблицах конечно колонок, типы колонок ограничены, например 64 битами или 4096 символами. вполне реальная ситуация

Pineapple
22.05.2018
14:02:49
Что угодно Double → Double

Вполне конечные множества

Евгений
22.05.2018
14:03:13
А потом кто-то доставляет памяти в сервер и всё падает

Yuriy
22.05.2018
14:03:23
да, все Double за час не переберёшь

Евгений
22.05.2018
14:03:39
Бесконечность это возможность к расширению и всё

Dmitry
22.05.2018
14:03:41
Да зачем их все-то перебирать?

Pineapple
22.05.2018
14:04:29
Yuriy
22.05.2018
14:04:32
Да зачем их все-то перебирать?
как иначе программу проверить?

Евгений
22.05.2018
14:05:08
Куда Double расширять? В quad precision?
Запустить программу на компе с 128'битами?

Pineapple
22.05.2018
14:05:34
arbitrary precision float
Это уже совсем другой зверь с другими алгоритмами

Dmitry
22.05.2018
14:07:11
Разбор частных случаев. Ну вот есть программа bug :: Double -> Double ; bug x = if x = 2 then bug 2 else 1 / x. Тут всё множество поделится на (-inf, 0), 0, (0, 2), 2, (2, inf). Для случая 2 есть рекурсивный вызов без изменения аргумента, следовательно -- это явный цикл. Для 0 -- деление, типа, тоже программа завершается. остальные значения обрабатываются.

Dmitry
22.05.2018
14:08:55
Ну да, я, кажется, начинаю понимать... Всё-таки множество таких разбиений может сильно вырасти, что будет почти эквивалентно полному перебору.

Ладно, надо матчасть подтягивать по завершителям

Google
Pineapple
22.05.2018
14:11:40
Ах да, для 32 бит есть ещё excess precision, так что нет гарнтий, что равенство будет работать как ожидается

Dmitry
22.05.2018
14:11:40
Интересно, а в Лаборатории Касперского уже сталкивались с такими программами, про которые не удавалось за конечное время сказать, что они точно вирусы или не вирусы?

@cblp_su ^ ;)

Blini
22.05.2018
14:13:36
*шутка про макось и бэкдоры*

Евгений
22.05.2018
14:13:40
Я думаю что спустя конечное время на них натравливают вирусологов

Yuriy
22.05.2018
14:13:57
задача любого вируса — не быть распознанным как вирус

Dmitry
22.05.2018
14:16:00
Задача максимум

Yuriy
22.05.2018
14:16:22
раз в несколько лет такое случается

компьютеры не всесильны

Dmitry
22.05.2018
14:17:41
"Такое" -- что?

Yuriy
22.05.2018
14:17:49
простите. вернёмся к Хаскелю и машинам Тьюринга

"Такое" -- что?
антивирус пропускает зловреда

пишите опердень на Coq/Agda/Idris, чтобы она завершалась

Dmitry
22.05.2018
14:22:22
Будем стараться!

Главное, самим при этом завершаться

http://aprove.informatik.rwth-aachen.de/eval/Haskell/

Библиотека хаскеля более-менее завершается ;)

Антон
22.05.2018
14:29:38
Yuriy
22.05.2018
14:30:10
есть анализ завершимости для Хаскеля в Liquid Haskell. работает примерно так же, как в тотальных языках. грубо говоря, если функция имеет известную структуру для тотальных функций, то она тотальна, иначе — завершимость не доказана

Google
Yuriy
22.05.2018
14:31:08
Жестокий ты человек
это самое доброе, что можно предложить

жестокий предложил бы ATS

kir
22.05.2018
14:35:51
пишите опердень на Coq/Agda/Idris, чтобы она завершалась
Добавляем в петлю параметр типа Nat, уменьшаем на единицу каждый проход, изначально суём 2^10000. На наше век завершимости хватит.

dimiii
22.05.2018
14:38:09
Добавляем в петлю параметр типа Nat, уменьшаем на единицу каждый проход, изначально суём 2^10000. На наше век завершимости хватит.
Замечательно же, можно теоретизировать, а можно пытаться делать полезные вещи http://aprove.informatik.rwth-aachen.de/index.asp?subform=termination_proofs.html

Alexander
22.05.2018
15:25:22
Я правильно понимаю, что Control.Category не предназначен для описания категорий с объектами-объектами?

то есть он чисто для объектов-типов?

и если не прездназначен, то есть ли либа чтобы сразу получить много полезных функций?

Andy
22.05.2018
16:01:01
Всем привет! решил ФП попробовать и haskell в частности) Пока еще ничего не писал, только читаю чат да статьи разные про хаскел, окамл, дизайн в фп стиле и тп, и даже много чего на удивление понятно) Но это как с иностранным - читаешь- понимаешь - но сам написать еще не можешь. В целом код в разных хело-ворд примерах понятен (вроде бы :) ) - на монады, трансоформеры, линзы, сервантовские type-level "шткуки" , free-монады. Но вот как бы это все сложить вместе в конкретном случае непонятно. Поэтому решил на практике сделать какойто микросервис и походу разбираться. Есть 2 вопроса (на самом деле больше) edit - Вопросы отдельными сообщиниями сделал

1) Есть ли в каком то из фреймворков (пока рассматриваю только scotty или servant) возможность отдавать статические файлы? Но так, чтобы range header правильно обрабатывать и прочие стандарты соблюдать и не делать все самому. Знаю, что есть stream servant-а, но он не соблюдает все эти стандарты и надо самому все это делать - не подходит. Как вариант еще предлагают мидлварь из wai "заворачивать" в сервантовский Raw - но мне тоже не подходит, так как по условию задачи файл нужно отдавать только при соблюдении ряда условий, проверяемых внутри хендлера (разного рода авторизация закачек) - поэтому нужно как бы динамически "подсовывать" статик-хендлер , в противном случае отдавать 404. А в wai просто статичный роут на папку и все.

2) Есть ли какой-то сайт с задачками на "комбинаторы" ?) Типа, хитро скомбинировать zip'ы, fold-ы, map-ы, "совы" , аппликативы, bind и тп, чтобы поинт фри запись не вызывала стопор на 5 минут )

dimiii
22.05.2018
16:06:07
Всем привет! решил ФП попробовать и haskell в частности) Пока еще ничего не писал, только читаю чат да статьи разные про хаскел, окамл, дизайн в фп стиле и тп, и даже много чего на удивление понятно) Но это как с иностранным - читаешь- понимаешь - но сам написать еще не можешь. В целом код в разных хело-ворд примерах понятен (вроде бы :) ) - на монады, трансоформеры, линзы, сервантовские type-level "шткуки" , free-монады. Но вот как бы это все сложить вместе в конкретном случае непонятно. Поэтому решил на практике сделать какойто микросервис и походу разбираться. Есть 2 вопроса (на самом деле больше) edit - Вопросы отдельными сообщиниями сделал
Напиши бота, который из группы выделяет полезные сообщения (все сообщения с ссылками и сообщения ответы на сообщения с ссылками, а также все сообщения от админов - последнее опционально, т/к например не работает в этой группе)

Alexander
22.05.2018
16:13:36
у нас аренда сервера CI стоит в 2 раза больше чем сервер прода, причем на CI даже свапфайл сделали от безнадеги :)

Andy
22.05.2018
16:16:08
ради серванта ? или есть еще "известные" прожорливые пакеты?

Andy
22.05.2018
16:27:26
статические файлы через wai middleware
тоесть я смогу динамически подсовывать middlware ? допустим нужно сходить на другой сервер, проверить ссылку и если ОК - тогда "отдать" через мидлварь ?

Andy
22.05.2018
16:29:03
99 Haskell problems, hackerrank, codewars
спасибо, буду смотреть

можно
а можно еще одну подсказку? - тут нужен этот пакет wai-app-static? а то я все время про этот wai-middleware-static говорил, и он вроде не подходит

Страница 1215 из 1551