Size: a a a

2017 January 26

j

jabber.ru in codingteam
ForNeVeR
Ну а там уже, да, можно либо проинтерпретировать, либо скомпилировать последовательность операций в какую-нибудь функцию.
источник

j

jabber.ru in codingteam
gsomix
Ну, я могу соорудить что-то подобное в F#, наверное.
источник

j

jabber.ru in codingteam
ForNeVeR
Не так-то просто!
источник

j

jabber.ru in codingteam
ForNeVeR
Это как в LINQ, смотри.
источник

j

jabber.ru in codingteam
ForNeVeR
Представь, что у тебя у всех LINQ-операций сигнатура A[] -> B[]
источник

j

jabber.ru in codingteam
ForNeVeR
У тебя на этом месте весь фьюжен сломается. Ты ничего не можешь больше зафьюзить.
источник

j

jabber.ru in codingteam
ForNeVeR
Потому что операция array1.Select(func) должна вернуть массив.
источник

j

jabber.ru in codingteam
gsomix
Ага.
источник

j

jabber.ru in codingteam
ForNeVeR
Но!
источник

j

jabber.ru in codingteam
ForNeVeR
Если ты явно вводишь новый тип 'a seq и терминирующую операцию ToArray() — тогда всё норм.
источник

j

jabber.ru in codingteam
ForNeVeR
Поэтому я заговорил про семантику языка — мол, хорошо бы, чтоб он в таких случаях позволял вызываемому коду определить окончание выражения.
источник

j

jabber.ru in codingteam
gsomix
Да.
источник

j

jabber.ru in codingteam
ForNeVeR
Но у них там, видимо, ещё более ad-hoc сделано: просто, если видим последовательность матричных операций, то фьюзим их и всё. Да?
источник

j

jabber.ru in codingteam
gsomix
Все так. Выглядит очень красиво.
источник

j

jabber.ru in codingteam
ForNeVeR
Это очень полезно на практике, но немножко некрасиво в теории. Ну, если мы фьюзинг завязали на конкретные виды операций и не позволяем пользователю расширить.
источник

j

jabber.ru in codingteam
gsomix
И у них вообще любые функции можно применять к матрицам, и они будут фьюзится.
источник

j

jabber.ru in codingteam
gsomix
Есть синтаксис специальный.
источник

j

jabber.ru in codingteam
gsomix
f.(g.(A)) в один цикл скомпилиоуется.
источник

j

jabber.ru in codingteam
gsomix
Где f и g -- обычные функции.
источник

j

jabber.ru in codingteam
gsomix
ForNeVeR, специализированные языки -- это сила.
источник