Size: a a a

Clojure — русскоговорящее сообщество

2019 July 10

AG

Alexey Golda in Clojure — русскоговорящее сообщество
мухожук
ну, дженерик код он всегда такой, ничего особенного
этот код я написал что красивый ), это без иронии было, пример где типов много.
источник

м

мухожук in Clojure — русскоговорящее сообщество
Alexey Golda
ну ок, не UTF-8 ) я утрировал конечно.

Но если открыть исходники хотя бы самой популярной библиотеки rand, то глаз дергается (не везде, местами). Я про цену. Много говорится о скорости, zero-cost abstractions, управлении памятью, и тд, и довольно мало о mind cost.

Вероятно для кого-то да, этот код обычный, тут у каждого по-своему восприятие работает. Не спорю.
о, старая песня
источник

м

мухожук in Clojure — русскоговорящее сообщество
Alexey Golda
этот код я написал что красивый ), это без иронии было, пример где типов много.
кажется не все оценили "без иронии"
источник

м

мухожук in Clojure — русскоговорящее сообщество
я бы не сказал, что он красивый
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
Alexey Golda
ну ок, не UTF-8 ) я утрировал конечно.

Но если открыть исходники хотя бы самой популярной библиотеки rand, то глаз дергается (не везде, местами). Я про цену. Много говорится о скорости, zero-cost abstractions, управлении памятью, и тд, и довольно мало о mind cost.

Вероятно для кого-то да, этот код обычный, тут у каждого по-своему восприятие работает. Не спорю.
это из разряда "не могу кложу скобок много"?
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
мм ну в моем случае наоборот да, не могу раст синтаксис, много всего, а скобки норм
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
В кложе такой синтаксис ("непривычный") не просто так и имеет понятные преимущества. Может быть синтаксис раста таких преимуществ не имеет, но "смотреть нельзя на программы" просто потому что там синтаксис непривычный, это странно
источник

м

мухожук in Clojure — русскоговорящее сообщество
Alexey Golda
или вот красивый код на rust ), но "еще немного типов", из свежего

https://twitter.com/mitsuhiko/status/1148621475169091584
стоит ли добавить метаданные и спек, и начинаем придвигаться к похожему
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
Andrew Rudenko
В кложе такой синтаксис ("непривычный") не просто так и имеет понятные преимущества. Может быть синтаксис раста таких преимуществ не имеет, но "смотреть нельзя на программы" просто потому что там синтаксис непривычный, это странно
ну читать программу, не смотреть, и тут же в голове представлять происходящее. Код на раст я так читать пока не могу слету. Но вопросов у меня мало самому коду, я больше к типам не привычный и как это выражено в расте в сложных случаях
источник

A

Artem in Clojure — русскоговорящее сообщество
мухожук
стоит ли добавить метаданные и спек, и начинаем придвигаться к похожему
Первое правило клуба любителей спеки: не пиши спеку
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
ну вот пример реализации метода внутри мне понятен, а дженерик такой, я так просто не понимаю/не могу интерпретировать сходу

impl<'a, S: Index<usize, Output = T> + ?Sized + 'a, T: 'a> ExactSizeIterator

   for SliceChooseIter<'a, S, T>
источник

A

Artem in Clojure — русскоговорящее сообщество
Может стоит язык подучить?
источник

м

мухожук in Clojure — русскоговорящее сообщество
Alexey Golda
ну вот пример реализации метода внутри мне понятен, а дженерик такой, я так просто не понимаю/не могу интерпретировать сходу

impl<'a, S: Index<usize, Output = T> + ?Sized + 'a, T: 'a> ExactSizeIterator

   for SliceChooseIter<'a, S, T>
S должен удовлетворять Index<...>, ?Sized и иметь лайтайм 'a
источник

м

мухожук in Clojure — русскоговорящее сообщество
T должен иметь лайтайм 'a
источник

м

мухожук in Clojure — русскоговорящее сообщество
?Sized это специальный маркер для низкоуровневых вещей, позволяет использовать дженерик неопределённого на момент компиляции размера

в среднем при разработке его не пишешь
источник

м

мухожук in Clojure — русскоговорящее сообщество
хз чё ещё сказать

S — скорее всего дженерик слайса
T — элемента
источник

AG

Alexey Golda in Clojure — русскоговорящее сообщество
спасибо, теперь яснее,
я выше писал что в пределах Rust book и нет таких примеров, и все более менее понятно и читаемо. Проблемы дальше, если капнуть глубже вроде таких примеров
источник

м

мухожук in Clojure — русскоговорящее сообщество
так ты зачем исходники смотришь вещей, которые отдельно затачивались на производительность и type soundness
источник

м

мухожук in Clojure — русскоговорящее сообщество
так-то можно функции писать без лайфтаймов, трейт-баундов (интерфейсов) и прочего;

просто будет копирования больше, как у тонского
источник

м

мухожук in Clojure — русскоговорящее сообщество
будешь передавать в функцию копию объекта, а не брать по ссылке
источник