
Alexander
21.08.2016
15:28:35
Еще inline-java есть у нас
Пока только байндинги правда, без TH

Aldar
22.08.2016
08:15:50
http://www.mathstat.dal.ca/~selinger/quipper/
Вдохновлялись хаскелем видимо

Google

Evgenij
22.08.2016
08:26:09
Только где достать квантовый компьютер??

Denis
22.08.2016
09:07:45

Evgenij
22.08.2016
09:16:20
Видел где-нибудь симулятор для по играться?

Denis
22.08.2016
09:18:03
Видел где-нибудь симулятор для по играться?
Не симулятор, а эмулятор. :)
Нет, не видел, к сожалению. Меня квантовые вычисления не особо интересуют, потому что компьютерами в привычном понимании этого слова им не стать.
Прикольно, многие реально пытаются симулировать квантовые процессы

Evgenij
25.08.2016
15:16:19
Ребята сможет понятно объяснить что такое "type level" программирование - так то я интуитивно понимаю -> хочется чёткого определения?

Aleksey
25.08.2016
15:24:24
это кодирование инвариантов программы при помощи типов

Evgenij
25.08.2016
15:29:57
те это только подходит для яп с сильными типами?со слабыми типами это невозможно?

Aleksey
25.08.2016
15:33:46
Для начала надо определиться, о чем речь. Если ты в с++ явно опрделяешь тип переменной, то это уже кодирование инварианта, и можно рассматривать как простиейший вид type level coding. В хаскеле можно кодировать инварианты с более сложными условиями.

Evgenij
25.08.2016
15:39:24
Ну например джаваскрипт - слабая типизация - т.е. тайп левел программирование там невозможен ( инвариантность бесконечна - даже если неправильное выражение - всё равно отработает , а что будет в результате хз), а на хаске сильная - там это сам бог требует т.е. это возможно (может я неправильно сформулировал вопрос?)
На размышления меня подвинула статья https://habrahabr.ru/post/308484/

Google

Evgenij
25.08.2016
15:47:08
Особенно про Idris - он же ссужает диапазон возможных ошибок -> и снижает затраты и время на тестирование(имхо)

Aleksey
25.08.2016
15:47:24
Скорее речь про динамическую и статическую типизацию. В языках с динамической типизацией кодирование инвариантов менее полезно, ибо инварианты будут проверены во время выполнения программы, в языках со статической типизацией проверки типов происходят на стадии компиляции.

Evgenij
25.08.2016
15:48:39
Я гдето читал если например был бы язык с ленивостью и при этом динамическая типизация - то нереально былобы его тестировать - т.е. никто не смог бы точно сказать что прога будет делать в любой момент
И тут хаск - но вот сможет кто нибудь кинуть мне ссылку - на премущества ленивости vs жадности)

Aleksey
25.08.2016
15:54:21
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
судя по определению сильная типизация это та, которая позволяет больше возможностей для типизации.

Evgenij
25.08.2016
15:57:54
Да сиогласен - но вот для меня яркими антиподами для статических типов - Хаскель и Голанг

melancholiac
25.08.2016
15:58:20
голанг.....
я так много слышу о нем в последнее время

Vladimir
25.08.2016
16:01:43
У него логтип клевый
это привлекает людей
маркетинг

Evgenij
25.08.2016
16:02:03
Голанг тестить надо хорошо - сам столкнулся
type (
user struct {
ID int json:"id"
Name string json:"name"
Age int jsom:"age"
}
)
Скомпилась без вопросов - только молча json поле age было Age - c заглавной

Aleksey
25.08.2016
16:04:24
а другие с прописной?

Evgenij
25.08.2016
16:04:38
А я думал что это элм противится)

Мерлин
25.08.2016
16:05:41

Aleksey
25.08.2016
16:06:05
> jsom
да, смешно
я так понял, json тут - аннотация, которая используется библиотекой для генерации json и эта библиотека молча использует имя поля, если не нашла нужную аннотацию

Google

Мерлин
25.08.2016
16:07:43

Aleksey
25.08.2016
16:09:12
разработчики Го вообще отказались от прогресса в языках программирования за последние лет 20. Предлагают все делать как в сишке. Го мало интересен, если ты хочешь писать надежные типизированные высокоуровневые программы.

Evgenij
25.08.2016
16:10:50
Вот фронт на елме

melancholiac
25.08.2016
16:11:45
эльммен
на эльме можно как на джс?

Evgenij
25.08.2016
16:12:14
Превалидация

melancholiac
25.08.2016
16:12:22
(я всмысле что-то серьезное)

Denis
25.08.2016
16:12:29
Какой-то бред, если честно. Простите, если кого обидел.

melancholiac
25.08.2016
16:12:30
или еще сыроват?

Мерлин
25.08.2016
16:12:35

Denis
25.08.2016
16:15:06
type level это про подход к программированию, в котором большой упор делается на типизацию данных. То есть в такой программе, грубо говоря, типы "мяч" и "шар" это разные типы, которые нельзя смешивать просто так. И этот подход возможен в любом языке программирования, где имеется возможность определять свои типы.

Evgenij
25.08.2016
16:16:16

Denis
25.08.2016
16:16:30
Динамическая, статическая, сильная, слабая типизация... Пофиг. Это можно парадигмой назвать. Или шаблоном. Как процедурное программирование.

Aleksey
25.08.2016
16:17:14

Evgenij
25.08.2016
16:17:16

Denis
25.08.2016
16:17:54

Evgenij
25.08.2016
16:19:39
на эльме можно как на джс?
А мне отладчик - пока костыль понравился ( говорят будет более лучше - пробы с версиями ) - Время неимеет значение - важна жизнь(с) (5й элемент)

Denis
25.08.2016
16:19:55
Главное, что понимают его меньше людей, чем используют.

Google

melancholiac
25.08.2016
16:20:25

Evgenij
25.08.2016
16:21:31
Если кому интересно могу кинуть исходник быдло кода н аэлме)))

Denis
25.08.2016
16:22:10

melancholiac
25.08.2016
16:22:21
да

Admin
ERROR: S client not available

melancholiac
25.08.2016
16:22:29
можно и так

Denis
25.08.2016
16:23:16
да
Ок, ты точно попал в 5%
Для остального слишком мало написал. У слова слишком много вариантов использования.

melancholiac
25.08.2016
16:23:30
ееееееее

Denis
25.08.2016
16:24:32
ееееееее
Тут видишь какое дело. Так и не стало понятно, как эти "неизменные сущности" применить к программированию, основанному на типизации.

melancholiac
25.08.2016
16:25:33
2 тест : объекты должны иметь инвариантный тип?
(хотя если чесно херню сморозил ибо по смыслу "исключить полиморфное поведение")

Мерлин
25.08.2016
16:31:20

Aleksey
25.08.2016
16:32:00
это как раз слабая

Denis
25.08.2016
16:32:24
Хитрый ход :)

Мерлин
25.08.2016
16:32:40

Denis
25.08.2016
16:33:09
Но нет, сильная и слабая типизация это не черное и белое. Там посередине дофига оттенков

Evgenij
25.08.2016
16:33:53
Да я согласен - термин чётко пока не сформулирован

Aleksey
25.08.2016
16:34:25
В хаскеле явное приведение типов тоже не обязательно, вернее, его можно сделать неявным через тайпклассы.

Denis
25.08.2016
16:34:43
Например, один язык позволяет прибавить к строке число, а в другом есть конструктор даты из строки. В каком из них типизация сильнее или слабее?

Google

Aleksey
25.08.2016
16:35:08
это вообще не говорит о типизации

Denis
25.08.2016
16:35:33
Или вот, если в языке к строке можно символ добавить, это делает типизацию слабой?

Evgenij
25.08.2016
16:35:53
Да конструкторы это не типы - их можно реализовать как хочешь

Мерлин
25.08.2016
16:37:30

Denis
25.08.2016
16:37:40

Мерлин
25.08.2016
16:39:06
В смысле, если внешне конкатенация двух строк и прибавление числа к строке неотличимы и это валидная операция - то это слабая типизация
Хотя это всё вопрос терминологии

Evgenij
25.08.2016
16:40:56
Я думаю что вкладывают в понятие например String и в Char создателя языка

Denis
25.08.2016
16:44:29
Да уж, ребятки. Вот есть у нас "замечательный" язык C++, прости господи.
В нем нельзя сложить строку и символ. Но я могу перегрузить оператор сложения и определить нужную операцию. И, о чудо, строка начала складываться с символом!

Anatolii
25.08.2016
16:44:36
Товарищи, есть пакеты Text.Parsec и Text.ParsecCombinators.Parsec
и у них некоторые функции пересекаются
кто-то обьяснит почему так?:)

Denis
25.08.2016
16:50:01

Index
25.08.2016
17:21:31
Re: type level programming