@DC7499

Страница 644 из 1477
Иван
06.04.2017
22:39:01
И выкатить стектрейс на экран)

Shmelev
06.04.2017
22:39:13
можно было бы его перехватывать

Vladimir
06.04.2017
22:39:28
Как бы странно, сравнивать язык, в котором мейби есть из коробки с тем, в котором ни о монадах, ни об алгебраических ТД слыхом ни слыхивали =/

Shmelev
06.04.2017
22:39:28
можно вернуть none, например

Google
Иван
06.04.2017
22:40:14
Хорошо. Питон предлагает два решения: исключения и возврат none.

Vladimir
06.04.2017
22:41:21
Давайте тогда посмотрим (раз речь зашла о монадах), как в хаскелле будет выглядеть отправка N параллельных HTTP-запросов, замер времени ответа на них и вывод его на экран :)

Aldar
06.04.2017
22:41:45
Хорошо. Питон предлагает два решения: исключения и возврат none.
можно вернуть код ошибки еще, но его потом надо проверять

Shmelev
06.04.2017
22:41:49
это будет забавно сравнить с async в питоне

Иван
06.04.2017
22:42:22
Хорошо. Питон предлагает два решения: исключения и возврат none.
А что произойдёт, если кто-то, пользуясь нашей функцией, забудет проверить, что она вернула валидный результат?

Он схавает какой-то мусор.

Aldar
06.04.2017
22:42:51
errno в глобальной переменной?
возвращать два значения, первой результат и второе код ошибки

Shmelev
06.04.2017
22:42:53
какой-то none

возвращать два значения, первой результат и второе код ошибки
исключения выглядят наиболее адекватным решением

Aldar
06.04.2017
22:43:09
как в питоне возвращать два значения? в тупл их положить наверное

Иван
06.04.2017
22:43:18
Давайте поссотрим теперь как это можно в хаскеле сделать.

Google
Aldar
06.04.2017
22:43:20
или что-то подобное

Иван
06.04.2017
22:43:38
Он схавает какой-то мусор.
Или увидит стектрейс.

Shmelev
06.04.2017
22:43:53
можно errno и сигналы какие-нибудь, а-ля C, но это неправильно

Aldar
06.04.2017
22:44:41
по питонячьи же исключение кинуть?

Shmelev
06.04.2017
22:44:50
ага

Иван
06.04.2017
22:45:37
mydiv : Int -> Int -> Maybe Int mydiv x 0 = Nothing mydiv x y = Just (x `div` y)

Эта функция возвращает не просто число, а специальный тип, оборачивающий его

Этот тип хранит либо число, либо пустое значение

Пустое значение - это Nothing, его иногда как отсутствие значения интерпретируют

Shmelev
06.04.2017
22:48:15
Чем оно принципиально отличается от None в данном случае?

Иван
06.04.2017
22:48:37
Сейчас расскажу)

Теперь если кто-то хочет получить результат из этого Maybe, он обязан проверить, деймтвительно ли результат там есть.

То есть, не Nothing ли там.

И если он этого не сделает. Программа просто не скомпилируется.

То есть, мы ловим эту ошибку без тестировпния и стектрейсов.

И ещё хаскель имеет специальную do-нотацию для облегчения работы с такими значениями, которая добавляет эти проверки за нас.

Aldar
06.04.2017
22:52:06
там фишка что можно комбинировать вычисления, (>>=) : :Maybe a -> (a -> Maybe b) -> Maybe b

и так по цепочке

Shmelev
06.04.2017
22:52:26
в питоне многие такие вещи реализовать принципиально нельзя, т.к. он не компилируемый

Aldar
06.04.2017
22:52:36
если где то в цепочке будет Nothing, то и в конце будет Nothing

Google
Иван
06.04.2017
22:52:39
Именно это я и хотел показать чуть подробнее.

Shmelev
06.04.2017
22:53:01
Зато там есть возможности для лямбда-программирования с элементами ооп

Иван
06.04.2017
22:53:34
Да, но если вы попробуете типы хаскеля, вы можете перехотеть ООП)

Shmelev
06.04.2017
22:54:12
соединение данных и кода в одном месте не всегда естественная модель, да

но иногда она может быть удобнее

Иван
06.04.2017
22:55:02
В хаскель вложено множество академических исследовпний языков программирования. Люди уже лет 50 думают о том, как сделать хороший язык, о математике, которая нужна для этого.

Admin
ERROR: S client not available

Shmelev
06.04.2017
22:55:04
https://pastebin.com/kgHhVwHZ вот, кстати, пример с асинхронным ftp на питоне

Иван
06.04.2017
22:55:21
А в питон вложена только фантазия автора.

Shmelev
06.04.2017
22:56:19
питон очень прикладной и предназначен для быстрого решения практических задач

вплоть до того, что экономят буквы для увеличения скорости набора

Aldar
06.04.2017
22:56:35
Потому, что в нём нет типов.
есть типы, просто типизация динамическая, а не статическая

Иван
06.04.2017
22:56:51
Если у вас есть готовые модули с функциями solve_my_task1, solve_my_task2, вам подойдёт любой язык)

Shmelev
06.04.2017
22:56:54
утиная типизация и безопасная работа с памятью для того же

основная функция питона - экономия времени кодера/инженера

Иван
06.04.2017
22:58:07
Вопрос в том, какой язык позволяет вам писать свою логику быстро, эффективно и без ошибок.

но есть они далеко не под все языки
Ращумеется. Речь шла про язык, для которого всё написано.

Shmelev
06.04.2017
22:58:40
питон не для своей логики, а для комбинирования чужих модулей в свой сценарий

Google
Иван
06.04.2017
22:59:59
питон не для своей логики, а для комбинирования чужих модулей в свой сценарий
Для этого он отлично подходит. Но я бы не хотел комбинировать больше 100 строк такой логики. Никогда. И не хотел бы никогда читать эту логику после того, как однажды её написал.

Shmelev
06.04.2017
23:00:21
ну это после perl-а :-)

Aldar
06.04.2017
23:00:43
питон хороший язык, просто и удобный

Shmelev
06.04.2017
23:00:55
питон похож на литературный английский и несложен в освоении

и в отличие от перла, на нём нельзя писать по-разному

Aldar
06.04.2017
23:01:06
щас для анализа данных используется повсеместно, да и для веба

Shmelev
06.04.2017
23:01:12
вернее можно, но неудобно

perl быстрее, но сложнее в освоении и, да и изначально был разработан для обработки текста

Иван
06.04.2017
23:04:42
Мне программировпния на питоне стало казаться какой-то унылой механической рвботой. Не хочу тратить на такое своё время.

Страница 644 из 1477