Evgeniy
Особенно про Idris - он же ссужает диапазон возможных ошибок -> и снижает затраты и время на тестирование(имхо)
Aleksey
Скорее речь про динамическую и статическую типизацию. В языках с динамической типизацией кодирование инвариантов менее полезно, ибо инварианты будут проверены во время выполнения программы, в языках со статической типизацией проверки типов происходят на стадии компиляции.
Evgeniy
Evgeniy
Я гдето читал если например был бы язык с ленивостью и при этом динамическая типизация - то нереально былобы его тестировать - т.е. никто не смог бы точно сказать что прога будет делать в любой момент
Evgeniy
И тут хаск - но вот сможет кто нибудь кинуть мне ссылку - на премущества ленивости vs жадности)
Aleksey
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B8_%D1%81%D0%BB%D0%B0%D0%B1%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F
судя по определению сильная типизация это та, которая позволяет больше возможностей для типизации.
Evgeniy
Да сиогласен - но вот для меня яркими антиподами для статических типов - Хаскель и Голанг
melvin
голанг.....
melvin
я так много слышу о нем в последнее время
Vladimir
У него логтип клевый
Vladimir
это привлекает людей
Vladimir
маркетинг
Evgeniy
Голанг тестить надо хорошо - сам столкнулся
type (
user struct {
ID int json:"id"
Name string json:"name"
Age int jsom:"age"
}
)
Evgeniy
Скомпилась без вопросов - только молча json поле age было Age - c заглавной
Aleksey
а другие с прописной?
Evgeniy
А я думал что это элм противится)
Aleksey
> jsom
да, смешно
Aleksey
я так понял, json тут - аннотация, которая используется библиотекой для генерации json и эта библиотека молча использует имя поля, если не нашла нужную аннотацию
Мерль
Aleksey
разработчики Го вообще отказались от прогресса в языках программирования за последние лет 20. Предлагают все делать как в сишке. Го мало интересен, если ты хочешь писать надежные типизированные высокоуровневые программы.
Evgeniy
Evgeniy
Вот фронт на елме
melvin
melvin
эльммен
melvin
на эльме можно как на джс?
Evgeniy
Evgeniy
Превалидация
melvin
(я всмысле что-то серьезное)
Denis
Какой-то бред, если честно. Простите, если кого обидел.
melvin
или еще сыроват?
Мерль
Denis
type level это про подход к программированию, в котором большой упор делается на типизацию данных. То есть в такой программе, грубо говоря, типы "мяч" и "шар" это разные типы, которые нельзя смешивать просто так. И этот подход возможен в любом языке программирования, где имеется возможность определять свои типы.
Denis
Динамическая, статическая, сильная, слабая типизация... Пофиг. Это можно парадигмой назвать. Или шаблоном. Как процедурное программирование.
Aleksey
Evgeniy
Denis
Evgeniy
на эльме можно как на джс?
А мне отладчик - пока костыль понравился ( говорят будет более лучше - пробы с версиями ) - Время неимеет значение - важна жизнь(с) (5й элемент)
Denis
Главное, что понимают его меньше людей, чем используют.
melvin
Evgeniy
Если кому интересно могу кинуть исходник быдло кода н аэлме)))
melvin
да
melvin
можно и так
Denis
да
Ок, ты точно попал в 5%
Для остального слишком мало написал. У слова слишком много вариантов использования.
melvin
ееееееее
Denis
ееееееее
Тут видишь какое дело. Так и не стало понятно, как эти "неизменные сущности" применить к программированию, основанному на типизации.
melvin
melvin
2 тест : объекты должны иметь инвариантный тип?
melvin
(хотя если чесно херню сморозил ибо по смыслу "исключить полиморфное поведение")
Мерль
Aleksey
это как раз слабая
Denis
Хитрый ход :)
Denis
Но нет, сильная и слабая типизация это не черное и белое. Там посередине дофига оттенков
Evgeniy
Да я согласен - термин чётко пока не сформулирован
Aleksey
В хаскеле явное приведение типов тоже не обязательно, вернее, его можно сделать неявным через тайпклассы.
Denis
Например, один язык позволяет прибавить к строке число, а в другом есть конструктор даты из строки. В каком из них типизация сильнее или слабее?
Aleksey
это вообще не говорит о типизации
Denis
Или вот, если в языке к строке можно символ добавить, это делает типизацию слабой?
Evgeniy
Да конструкторы это не типы - их можно реализовать как хочешь
Evgeniy
Мерль
Denis
Denis
Мерль
В смысле, если внешне конкатенация двух строк и прибавление числа к строке неотличимы и это валидная операция - то это слабая типизация
Мерль
Хотя это всё вопрос терминологии
Evgeniy
Я думаю что вкладывают в понятие например String и в Char создателя языка
Denis
Да уж, ребятки. Вот есть у нас "замечательный" язык C++, прости господи.
В нем нельзя сложить строку и символ. Но я могу перегрузить оператор сложения и определить нужную операцию. И, о чудо, строка начала складываться с символом!
Anatolii
Товарищи, есть пакеты Text.Parsec и Text.ParsecCombinators.Parsec
Anatolii
и у них некоторые функции пересекаются
Anatolii
кто-то обьяснит почему так?:)
Denis
Vladislav
Re: type level programming
Vladislav
Ну вы придумали там определений.
Vladislav
А по факту это надо буквально понимать -- программирование на уровне типов
Vladislav
Когда компилятор выполняет какие-либо функции в процессе тайпчека.