Size: a a a

Типы в языках программирования, моделирования, представления знаний и жизни

2021 November 26

AB

ALEX BUR in Типы в языках программирования, моделирования, представления знаний и жизни
Семантики без синтаксиса не бывает.
источник
2021 December 01

АП

Антон Пилипчук... in Типы в языках программирования, моделирования, представления знаний и жизни
\type Parenthesis = {
 \object prefix : String = “(”;
 \object postfix : String = “)”;
 \struct : String -> String $ expr = prefix + expr + postfix;
};
\object p : Parenthesis = “MyString”;
print p;
В итоге, на экран будет выведено (MyString).

Тип
Parenthesis
это такой тип, что если переменной такого типа присваивается строковое значение, то оно автоматически обрамляется скобками.
У меня такое ощущение что я что-то переизобретаю. Чем-то напоминает перегрузку оператора =.

Прокомментируйте пожалуйста.
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
Я дорых пять секунд не мог понять, что этот кусок кода не на LaTeX
источник

B

Börgar in Типы в языках программирования, моделирования, представления знаний и жизни
+
источник

АП

Антон Пилипчук... in Типы в языках программирования, моделирования, представления знаний и жизни
А представьте что будет с теми кто пишет на Arend ?😁
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
Комментирую:
1) я против присваиваний в коде
2) ненужно, потому что функция короче
addParens txt = "(" <> txt <> ")"

main = print (addParens "MyString")
источник

АП

Антон Пилипчук... in Типы в языках программирования, моделирования, представления знаний и жизни
мне такой вариант не нравится тем что для каждой переменной каждый раз нужно вызывать эту функцию. В моём варианте, нужно просто чтобы у переменной был такой тип.

я мог бы написать так:
\type Parenthesis = {
          \struct : String -> String $ expr = "(" + expr + ")";
};
\object p : Parenthesis = “MyString”;
print p;
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
Юзеры будут по колено в таких implicit constructors.
источник

АП

Антон Пилипчук... in Типы в языках программирования, моделирования, представления знаний и жизни
с одной стороны да, с другой меньше писанины и меньше вероятность что то забыть(скобки).
источник

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
А как в языке типизируется выражение (print p)? Какого типа должно быть p?
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
> меньше вероятность что то забыть(скобки)

На это есть тесты, в конце концов.
источник

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
Вроде бы смысл как раз в том, чтобы выразить вариант наличия скобок в типах и не писать тесты
источник

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
Вы же сами на Хаскеле пишете, должны понимать :Р
источник

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
В данном конкретном примере можно написать аналогичную дичь на Хаскеле с OverloadedStrings
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
Никто не мешает забыть и поставить String вместо этого и не получить скобок.
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
Всю это оверлоадню используют только в DSL-ях и претти-принтерах.
источник

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
No True Haskeller?
источник

АП

Антон Пилипчук... in Типы в языках программирования, моделирования, представления знаний и жизни
По сути, p имеет тип String, а тип Parenthesis просто говорит о том как это строковое значение должно строится. В моём примере, значение строится из строки, которая обрамляется скобками
источник

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
Т.е. Parenthesis -- подтип String?
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
Шо?
источник