Size: a a a

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

2021 November 13

ПС

Павел Соколов... in Типы в языках программирования, моделирования, представления знаний и жизни
Если вопрос был про вездесущесть типов, то есть языки, в которых
1) Число аннотаций можно свести к минимуму (тот же Хаскель, извините)
2) Типы являются opt-in (TypeScript, Julia? Насчёт второго не уверен)
источник

ПС

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

K

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

K

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

K

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

AC

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

[

[BRM]White Rabbit in Типы в языках программирования, моделирования, представления знаний и жизни
?
источник

[

[BRM]White Rabbit in Типы в языках программирования, моделирования, представления знаний и жизни
А, распарсил
источник

АП

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

Может ли тип одной переменной, влиять на код, полученный в результате компиляции другой переменной?
источник

[

[BRM]White Rabbit in Типы в языках программирования, моделирования, представления знаний и жизни
Да, конечно.
Она может не скомпилироваться.
источник

K

Kir in Типы в языках программирования, моделирования, представления знаний и жизни
class FromString s where
 fromString :: String -> s

instance FromString String where
 fromString s = s

instance FromString Int where
 fromString = read

main = do
 let a = fromString "a"
 let b = fromString "4" + 1
 print (show a, show b)


Вот здесь, например, у нас return-type polymorphism. fromString - это перегруженная функция, возвращающая разные типы.

Реализовано оно в core-языке хаскелля как
fromString :: FromString s -> String -> s
show :: Show a -> a -> String


Компилятор выясняет, какой тип имеется ввиду и подставляет реализацию класса типов (= пачки перегруженных функций).
Получается, что a :: String, b :: Int. После чего компилятор идёт выводить коректные реализации class Show a where show :: a -> String.
источник

K

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

K

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

AC

Alexander Chichigin in Типы в языках программирования, моделирования, представления знаний и жизни
Ещё раз, если Вы спрашиваете "как в принципе может быть", то ответ всегда "как угодно". Бывает по-всякому, где как написали.
источник

AC

Alexander Chichigin in Типы в языках программирования, моделирования, представления знаний и жизни
Вы лучше код на final tagless покажите -- вот там полиморфизм! 😄
источник

[

[BRM]White Rabbit in Типы в языках программирования, моделирования, представления знаний и жизни
Типы всегда могут остановить компиляцию
источник

[

[BRM]White Rabbit in Типы в языках программирования, моделирования, представления знаний и жизни
Универсальный ответ
источник

K

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

[

[BRM]White Rabbit in Типы в языках программирования, моделирования, представления знаний и жизни
А я же правильно понимаю, черч энкодинг это перевод структур
Right a | Left b
В вид
forall c . (a -> c) -> (b -> c) -> c
?
источник

a

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