@haskellru

Страница 1359 из 1551
Daniel
23.07.2018
09:52:02
а баг с вариантностью массивов в яве есть? (ссылку не читал)
это боль, которую джава решила тащить с собой всегда как напоминание об ошибках

Александр
23.07.2018
09:52:49
по-другому подойду к вопросу все, что можно выполнить до деплоя, это статика
Можно деплоить докер-контейнер, в котором при его запуске будет запускаться программа с встроенным компилятором и исходной программой.

Алексей
23.07.2018
09:53:01
по-другому подойду к вопросу все, что можно выполнить до деплоя, это статика
с чего это вдруг? до деплоя можно выполнить огромную кучу вещей, которую язык никак не поворачивается назвать статикой

Index
23.07.2018
09:53:06
Нет, тогда это будет рантайм-ошибка у юзера, мол не удалось "скомпилировать"

Google
Daniel
23.07.2018
09:53:22
ну вот в C# дженерики "настоящие" в отличии от Java, значит в этом языке должна действительно быть типобезопасность, я полагаю
вот по ссылке портянка примеров о том, что это не обязательно верно из коробки качество реализации важно

Index
23.07.2018
09:53:36
короче, не знаю как лучше терминологию подобрать, но меня лично волнует, что мне компьютер с кодом поможет до того, как я его юзеру отправлю или задеплою на сервер

системы типов с этим помогают. то, что не помогает, типами быть не может

Алексей
23.07.2018
09:54:44
https://blogs.msdn.microsoft.com/ericlippert/2007/10/17/covariance-and-contravariance-in-c-part-two-array-covariance/
Next time we’ll discuss a kind of variance that we added to C# 2.0 which is not broken.

Александр
23.07.2018
09:54:53
короче, не знаю как лучше терминологию подобрать, но меня лично волнует, что мне компьютер с кодом поможет до того, как я его юзеру отправлю или задеплою на сервер
Я сделаю такую систему, где Python-программа будет выполняться на миллионе разных данных в тестовом окружении, чтобы помочь тебе до деплоя на сервер.

Index
23.07.2018
09:55:12
это называется тестирование

Александр
23.07.2018
09:55:23
Это подходит под определение

Алексей
23.07.2018
09:55:42
потому что определение неправильное

dimiii
23.07.2018
09:55:48
Хм, чем же доказательство отличается от проверки?

Index
23.07.2018
09:55:56
Это подходит под определение
тестирование отличается от типов, потому что доказывает корректность поведения программы при заданных сценариях (пусть их и миллион), а не отсутствие некорректного поведения by construction

A64m
23.07.2018
09:56:12
Next time we’ll discuss a kind of variance that we added to C# 2.0 which is not broken.
это не про то что массивы исправили а, наверное, про добавление вериантности для интерфейсов во вторую версию клр (но не в сишарп, правда - в него только в четвертую)

Google
Denis
23.07.2018
09:57:05
Как тут оживленно

A64m
23.07.2018
09:57:22
ну так сделали язык с сабтайпингом - ясно что дураки, какие еще варианты-то?

Index
23.07.2018
09:58:12
Окей, принимается.
я использую тесты когда системы типов не хватает в языке без системы типов, как Python, естественно надо всё покрыть тестами, чтобы хоть чуть-чуть рассудка сохранить

поэтому они там на TDD помешаны

Антон
23.07.2018
09:59:30
а баг с вариантностью массивов в яве есть? (ссылку не читал)
В яве встроенные массивы контрвариантные

dimiii
23.07.2018
09:59:33
ну так сделали язык с сабтайпингом - ясно что дураки, какие еще варианты-то?
В какой статье об этом можно почитать? Ну что авторы языков с сабтайпингом - подтип дураков?

В яве встроенные массивы контрвариантные
Ковариантны, но не суть - это всего лишь оптимизация, как я понимаю

A64m
23.07.2018
10:00:30
обычно так прямо в статьях не пишут Ж((

Алексей
23.07.2018
10:00:55
сабтайпинг - это что? наследование чтоли?

A64m
23.07.2018
10:01:09
не обязательно

Антон
23.07.2018
10:01:13
Наследование - это как бы субтипирование, только сломанное

Sunny
23.07.2018
10:02:36
Че пацаны

Мутабельность?

Алексей
23.07.2018
10:02:41
а что в нём сломанного?

A64m
23.07.2018
10:03:20
Наследование - это как бы субтипирование, только сломанное
один сломал два раза - другой потерял два раза.

Александр
23.07.2018
10:04:01
Кстати, почему фиолетовый и зеленый круги не пересекаются? Разве не существует людей со взвешенной позицией?

Yuriy
23.07.2018
10:04:52
что-то очень похожее на URI, и являющееся URI
это локальный контекстно-зависимый ури, а можно было сделать глобальный

A64m
23.07.2018
10:05:39
Кстати, почему фиолетовый и зеленый круги не пересекаются? Разве не существует людей со взвешенной позицией?
если у человека взвешенная позиция - как он сторонником динамики может быть?

Google
Александр
23.07.2018
10:06:23
если у человека взвешенная позиция - как он сторонником динамики может быть?
У людей вообще интересные сочетания бывают. Верующий ученый-физик, например

Yuriy
23.07.2018
10:06:48
если у человека взвешенная позиция - как он сторонником динамики может быть?
для некоторых задач, например, для интерфейса командной строки ОС, я не видел пока хороших типизированных яыков

A64m
23.07.2018
10:07:13
так их не делает никто потому-что

IC
23.07.2018
10:07:46
это локальный контекстно-зависимый ури, а можно было сделать глобальный
это RFC3986 URI. абсолютные идентификаторы в схеме https там тоже есть

Алексей
23.07.2018
10:07:46
если у человека взвешенная позиция - как он сторонником динамики может быть?
ну может человек хочет в динамике менять объекты, почему бы и нет?

A64m
23.07.2018
10:08:10
динамические языки это ж не какая-то альтернатива, а просто устаревшая в конце 70-х технология.

Александр
23.07.2018
10:08:14
Или он программирует на языке со смешанной типизацией?

Александр
23.07.2018
10:09:08
Или он программирует на статически типизированном языке как с а-ля void*?

Алексей
23.07.2018
10:09:36
динамические языки это ж не какая-то альтернатива, а просто устаревшая в конце 70-х технология.
ну устаревшая или нет, но тем не менее используется и используется очень широко

Yuriy
23.07.2018
10:09:47
Или он программирует на статически типизированном языке как с а-ля void*?
да, только сейчас это модно писать в виде interface{}

Александр
23.07.2018
10:10:30
да, только сейчас это модно писать в виде interface{}
Таким образом, пересечение оных кругов расширяется до пользователей ОО-языков?

Алексей
23.07.2018
10:11:12
Maxim
23.07.2018
10:12:52
Всем привет, читаю write yourself a scheme, столкнулся с проблемой: решил запилить некое подобие динамической типизации из лиспа, условно говоря, (+ 1 2) == 3, а (+ 1 2.5) == 3.5. Для этого сделал функцию, в которую передаю операцию (например, (*)) и 2 аргумента в виде оберток над значениям. Хочу, чтоб это работало обобщенно, но в итоге получаю ошибку Couldn't match expected type ‘a’ with actual type ‘Integer’ ‘a’ is a rigid type variable bound by. Как можно это исправить? Вот код: applyOp :: Num a => (a -> a -> a) -> LispVal -> LispVal -> LispVal applyOp op (LispNumber a) (LispNumber b) = LispNumber (op a b) applyOp op (LispNumber a) (LispDouble b) = LispDouble (op (fromIntegral a :: Double) b) applyOp op (LispDouble a) (LispNumber b) = LispDouble (op a (fromIntegral b :: Double)) applyOp op (LispDouble a) (LispDouble b) = LispDouble (op a b) В LispNumber лежит Integer, в LispDouble - Double

A64m
23.07.2018
10:12:53
кхм кхм в отличии от хаскеля кхм кхм
существует и такая проблема

Алексей
23.07.2018
10:13:12
а это не проблема

IC
23.07.2018
10:13:29
« the haskell is fine... »

Алексей
23.07.2018
10:14:00
ну точнее для хаскелистов может быть и проблема, но вот для меня нет, потому что я знаю кучу разнообразных языков и могу писать почти на чём угодно

Google
Алексей
23.07.2018
10:14:41
но ведь все эти языки - говно
очень субъективное утверждение

Sunny
23.07.2018
10:14:42
ох уж эти фанатики хаскеля

Андрей
23.07.2018
10:14:49
исправить просто - по символу + делай свертку листа интов ор даблов (лиспвал) и возвращай инт ор дабл

Алексей
23.07.2018
10:15:03
кто-то и хаскель назовёт говном потому что у него порог входа неслабый такой

A64m
23.07.2018
10:15:16
так и хаскель говно

Андрей
23.07.2018
10:15:20
скорее потому что не идрис/агда

A64m
23.07.2018
10:15:35
но там хоть какое-то движение в направлении не совсем говна есть

Admin
ERROR: S client not available

Maxim
23.07.2018
10:16:06
когда применяешь applyOp, фиксируется a. оно может быть любым, но только одним во всей функции
понимаю, хочу узнать, как это лучше всего реализовать наиболее обобщенно

Yuriy
23.07.2018
10:16:08
когда применяешь applyOp, фиксируется a. оно может быть любым, но только одним во всей функции
но это можно попробовать обойти таким путём: applyOp :: (forall a. Num a => a -> a -> a) -> LispVal -> LispVal -> LispVal

Leonid
23.07.2018
10:16:20
я вот не понимаю нытьё про порог входа в хаскель. Если я смог, значит не высокий.

Maxim
23.07.2018
10:16:32
юзал NoMonomorphismRestriction

Yuriy
23.07.2018
10:16:44
пробовал
что не срослось?

Алексей
23.07.2018
10:16:49
но там хоть какое-то движение в направлении не совсем говна есть
а оно нужно обычным программистам, которые какие-нибудь круды лепят с небольшим количеством бизнес логики?

Maxim
23.07.2018
10:16:49
Андрей
23.07.2018
10:16:51
а что значит “смог”? может это только так кажется?

Google
Yuriy
23.07.2018
10:16:54
юзал NoMonomorphismRestriction
это не связано

Yuriy
23.07.2018
10:17:13
неа
а что именно?

Leonid
23.07.2018
10:17:24
Андрей
23.07.2018
10:17:32
так себе критерий имхо

Yuriy
23.07.2018
10:17:37
это с RankNTypes?
да, это, возможно, ещё какие-то расширения надо включить

Maxim
23.07.2018
10:17:37
это не связано
тогда попробую forall сейчас заюзать, если это не одно и то же

Leonid
23.07.2018
10:17:48
так себе критерий имхо
а какой должен быть критерий то?

Андрей
23.07.2018
10:18:02
пара диссеров например

Leonid
23.07.2018
10:18:24
пара диссеров например
а диссеры про яваскрипт покажите

Yuriy
23.07.2018
10:18:34
надо уже рассуждения о языках выносить в отдельный чат. здесь вы мешаете практические проблемы решать

Leonid
23.07.2018
10:18:34
или может по плюсам?

Андрей
23.07.2018
10:18:42
вы про хаскель говорили а не про жс и плюсы

Maxim
23.07.2018
10:18:49
A64m
23.07.2018
10:18:51
очень субъективное утверждение
почему? нетипизированные языки - обективно говно. языки без параметрического полиморфизма - объективно говно. языки без вывода типов - объективно говно, языки без контроля эффектов - объективно говно, языки без hkt - объективно говно. строгие языки - объективно говно, языки без классов типов - объективно говно, языки без модулей - объективно говно. языки без проверки тотальности объективно говно. ну что там осталось из неговна? ничего Ж(((

Leonid
23.07.2018
10:19:00
ну всё, у меня подгорело

Yuriy
23.07.2018
10:19:10
кстати @fp_ru — чат, где можно языки обсуждать

A64m
23.07.2018
10:19:25
да

Андрей
23.07.2018
10:19:47
f = const shit

чекер Клапауция

Yuriy
23.07.2018
10:20:17
заработало, спасибо большое
с делением работать не будет

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