Forwarded from Leonid 🦇 Onokhov
Поганое солнце стояло в зените,
Поганые люди сидели вокруг,
Автобусом правил поганый водитель,
И очень погано смеялся мой друг.
Поганые люди сидели вокруг,
Автобусом правил поганый водитель,
И очень погано смеялся мой друг.
Forwarded from Денис
x as u16 ничего не сломает, если x: u8, но если ты потом заменишь тип переменной на, скажем, u32, то код продолжит собираться без ошибок и предупреждений, поэтому лучше делать u16::fromSkyCoffee, [25.07.19 19:06]
хороший язык Rust, заставил меня полюбить Си)
компилятор бы ругался, что не может познать лайфтайм для того, что он возвращает
Mikola Summer Duck, [25.07.19 19:07]
Может же
Он его возьмёт с лайфтайма &mut self
Логично выведя, что поле self будет жить столько же, сколько сам self
Без элижона оно будет выглядеть так:
речь же о времени жизни заимствованний, а не самих объектов, так что сложно
вот так я бы не смог вернуть один и тот же регистр два раза за время жизни эмулятора
Mikola Summer Duck, [25.07.19 19:09]
Не, ты не оперируешь временем жизни заимстсвования.
Мог бы. Нельзя держать две пишущие ссылки одновременно, это да.
Но вот это бы работало
хороший язык Rust, заставил меня полюбить Си)
компилятор бы ругался, что не может познать лайфтайм для того, что он возвращает
Mikola Summer Duck, [25.07.19 19:07]
Может же
Он его возьмёт с лайфтайма &mut self
Логично выведя, что поле self будет жить столько же, сколько сам self
Без элижона оно будет выглядеть так:
fn get_reg<'a>(&'a mut self, vx: u8) -> &'a mut u8 {
&mut self.registers.v_registers[vx as usize]
}
SkyCoffee, [25.07.19 19:09]речь же о времени жизни заимствованний, а не самих объектов, так что сложно
вот так я бы не смог вернуть один и тот же регистр два раза за время жизни эмулятора
Mikola Summer Duck, [25.07.19 19:09]
Не, ты не оперируешь временем жизни заимстсвования.
Мог бы. Нельзя держать две пишущие ссылки одновременно, это да.
Но вот это бы работало
let mut reg_a = self.get_reg(1);Потому что недавно в расте включили NLL, и теперь борровчекер стал намного добрее.
a += 1;
let mut reg_b = self.get_reg(2);
b += 9;
Tux, [26.07.19 09:05]
помогите с лайфтаймами разобраться
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=eb8c22ce3b9df236f9da7e35861bb053
Дмитрий Беляев, [26.07.19 10:20]
[In reply to Tux]
мне кажется из Shared::get_ref не получится вернуть ссылку
так как владелец сдохнет по ее завершении
Andrey @ozkriff Lesnikov, [26.07.19 10:26]
да, там lock() мьютекса возвращает гард, который по определению локальный и в этом его смысл. так что прямо так взять и вернуть ссылку вовне нельзя и так и должно быть. в чем сама решаемая задача?
Tux, [26.07.19 10:31]
[In reply to Andrey @ozkriff Lesnikov]
хочу избавиться от статик (который глобальная переменная) синглтона
Tux, [26.07.19 10:34]
и везде его через arc+mutex передавать. и хочется при этом сохранить красивый api, чтобы без кишок типа мьютекса наружу. как в actix контекст в Data передается
помогите с лайфтаймами разобраться
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=eb8c22ce3b9df236f9da7e35861bb053
Дмитрий Беляев, [26.07.19 10:20]
[In reply to Tux]
мне кажется из Shared::get_ref не получится вернуть ссылку
так как владелец сдохнет по ее завершении
Andrey @ozkriff Lesnikov, [26.07.19 10:26]
да, там lock() мьютекса возвращает гард, который по определению локальный и в этом его смысл. так что прямо так взять и вернуть ссылку вовне нельзя и так и должно быть. в чем сама решаемая задача?
Tux, [26.07.19 10:31]
[In reply to Andrey @ozkriff Lesnikov]
хочу избавиться от статик (который глобальная переменная) синглтона
Tux, [26.07.19 10:34]
и везде его через arc+mutex передавать. и хочется при этом сохранить красивый api, чтобы без кишок типа мьютекса наружу. как в actix контекст в Data передается
doc.rust-lang.org
MutexGuard in std::sync - Rust
An RAII implementation of a “scoped lock” of a mutex. When this structure is dropped (falls out of scope), the lock will be unlocked.
Stanislav Popov:
врёти что хаскель простой. там такие нагромождения, просто ад
тайп фемелис, линейные типы, миллион экстеншенов, миллион фиксов позволяющих делать чтото для чего то что раньше не делалось
λeonid Onokhov:
линейных типов ещё нет
почти все экстеншены считай что просто часть языка
Stanislav Popov:
ну я вот это прочитал https://gist.github.com/klapaucius/8fc2fbb48606e6dd9a9a095898e3fac4
врёти что хаскель простой. там такие нагромождения, просто ад
тайп фемелис, линейные типы, миллион экстеншенов, миллион фиксов позволяющих делать чтото для чего то что раньше не делалось
λeonid Onokhov:
линейных типов ещё нет
почти все экстеншены считай что просто часть языка
Stanislav Popov:
ну я вот это прочитал https://gist.github.com/klapaucius/8fc2fbb48606e6dd9a9a095898e3fac4
Gist
9.2
9.2. GitHub Gist: instantly share code, notes, and snippets.
λоλторт:
задачи на собеседованиях помогают понять, умеет ли человек своей головой думать
в этом плане для интервьюера даже лучше, если человек изначально решения не знает
тогда можно проследить ход мыслей собеседуемого
Слава:
А интервьюер сам умеет, или его сюда по иному принципу взяли?
С одной стороны, я как бы за академичность, с другой - ну-ка, суки, давайте-ка выкиньте тогда Линукс и прочую инженерию в духе "good enough", которой вы так радостно пользуетесь (особенно мыскль). И переходите на FreeBSD, а то и на Hurd. Будьте последовательны.
Охуенный подход. Спрашивать человека о том, чего он гарантированно не знает. А вы кого берете-то, и в курсе ли вы, как работает человеческое мышление в моменты делания чего либо?
Если не в курсе, поясняю: человек делает то, что он умеет делать, и делает это так, как он умеет делать. Именно поэтому все успешные языки похожи на сраную сишечку - потому что её умеют программисты, те, что есть. Именно поэтому так популярен питон - его студентишки учат, а потом сразу его знают и пишут на нем километры кода на своей дата сцаенс работе. И поэтому же js жил, жив и жить будет - его уже умеют. То есть, более продуктивным и разумным возможно было бы заявить "так, программистишки, с завтрашнего дня начинаем учить Окамл, и будет на нем писать под браузер (компилируя в js)". Но этого никто не делает, потому что знают - подход не взлетит. А на собеседованиях глумиться - это как здрасьте. Я полагаю, что это от природного мазохизма физматов - в то время, как будущие юристы трахали одноклассниц и одноклассников, физматы учились, вот и привыкли к долготерпению и страданиям.
Откуда ты знаешь, ты собеседовал, и проводил допросы достаточного количества собеседующих?
задачи на собеседованиях помогают понять, умеет ли человек своей головой думать
в этом плане для интервьюера даже лучше, если человек изначально решения не знает
тогда можно проследить ход мыслей собеседуемого
Слава:
А интервьюер сам умеет, или его сюда по иному принципу взяли?
С одной стороны, я как бы за академичность, с другой - ну-ка, суки, давайте-ка выкиньте тогда Линукс и прочую инженерию в духе "good enough", которой вы так радостно пользуетесь (особенно мыскль). И переходите на FreeBSD, а то и на Hurd. Будьте последовательны.
Охуенный подход. Спрашивать человека о том, чего он гарантированно не знает. А вы кого берете-то, и в курсе ли вы, как работает человеческое мышление в моменты делания чего либо?
Если не в курсе, поясняю: человек делает то, что он умеет делать, и делает это так, как он умеет делать. Именно поэтому все успешные языки похожи на сраную сишечку - потому что её умеют программисты, те, что есть. Именно поэтому так популярен питон - его студентишки учат, а потом сразу его знают и пишут на нем километры кода на своей дата сцаенс работе. И поэтому же js жил, жив и жить будет - его уже умеют. То есть, более продуктивным и разумным возможно было бы заявить "так, программистишки, с завтрашнего дня начинаем учить Окамл, и будет на нем писать под браузер (компилируя в js)". Но этого никто не делает, потому что знают - подход не взлетит. А на собеседованиях глумиться - это как здрасьте. Я полагаю, что это от природного мазохизма физматов - в то время, как будущие юристы трахали одноклассниц и одноклассников, физматы учились, вот и привыкли к долготерпению и страданиям.
Откуда ты знаешь, ты собеседовал, и проводил допросы достаточного количества собеседующих?
Forwarded from Nick Ivanych
Неа, ничо там не исправляли.
Вот pijul, как раз, и есть почти что darcs (какой-то одной фичи не хватает), но с оптимальными алгоритмами.
Вот pijul, как раз, и есть почти что darcs (какой-то одной фичи не хватает), но с оптимальными алгоритмами.
Forwarded from Nick Ivanych
However, Pijul's pristine format was designed to comply with axioms on a specific set of operations only.
As a result, some of darcs' features, such as darcs replace, are not (yet) available.
https://pijul.org/manual/why_pijul.html
As a result, some of darcs' features, such as darcs replace, are not (yet) available.
https://pijul.org/manual/why_pijul.html
Forwarded from Sergey Sverdlov
И по-русски: https://habr.com/ru/company/mailru/blog/461321/
Хабр
Модели дженериков и метапрограммирования: Go, Rust, Swift, D и другие
В некоторых сферах программирования нормально хотеть написать такую структуру данных или алгоритм, которые могут работать с элементами разных типов. Например, с...
Forwarded from Денис
при этом
for element in a.iter() {
println!("the value is: {}", element);
}
полностью эквивалентноlet mut iter = a.iter();
while let Some(element) = iter.next() {
println!("the value is: {}", element);
}Am i imagining it, or is this a reincarnation of an old soundness hole in Java's type system, which also hinged on uninstantiable witness types:
https://stedolan.net/java-unsoundness/
https://stedolan.net/java-unsoundness/
Timofey Zakrevskiy, [28.07.19 17:16]
А можно перевод на человеческий - откуда слово final в final encoding?
Nick Ivanych, [28.07.19 17:17]
[In reply to Timofey Zakrevskiy]
Можно считать, что ниоткуда.
Что-то типаа "другое представление, чем initial".
Timofey Zakrevskiy, [28.07.19 17:18]
Initial == явные конструкторы?
Nick Ivanych, [28.07.19 17:18]
[In reply to Timofey Zakrevskiy]
типатого.
Timofey Zakrevskiy, [28.07.19 17:19]
А где тогда Чёрч в этом спектре?
Timofey Zakrevskiy, [28.07.19 17:20]
И, идя по стопам Кантора, есть ли представление между initial и final?
Nick Ivanych, [28.07.19 17:24]
[In reply to Timofey Zakrevskiy]
Скорее всего, вы имеете в виду Бёма-Берардуччи.
И "где" он, я чотта даже и не знаю, что ответить ;-)
И что такое "между" ;-)
Это не есть какая-то линия, вдоль которой всё выстраивается.
Kirill Valyavin, [28.07.19 17:24]
[In reply to Timofey Zakrevskiy]
final — финальное представление, т. е. такое, которое уже не надо интерпретировать. Сразу семантика
Nick Ivanych, [28.07.19 17:29]
[In reply to Timofey Zakrevskiy]
Олег сказал "We call this approach final (in contrast to initial) because we represent each object term not by its abstract syntax, but by its denotation in a semantic algebra"
А можно перевод на человеческий - откуда слово final в final encoding?
Nick Ivanych, [28.07.19 17:17]
[In reply to Timofey Zakrevskiy]
Можно считать, что ниоткуда.
Что-то типаа "другое представление, чем initial".
Timofey Zakrevskiy, [28.07.19 17:18]
Initial == явные конструкторы?
Nick Ivanych, [28.07.19 17:18]
[In reply to Timofey Zakrevskiy]
типатого.
Timofey Zakrevskiy, [28.07.19 17:19]
А где тогда Чёрч в этом спектре?
Timofey Zakrevskiy, [28.07.19 17:20]
И, идя по стопам Кантора, есть ли представление между initial и final?
Nick Ivanych, [28.07.19 17:24]
[In reply to Timofey Zakrevskiy]
Скорее всего, вы имеете в виду Бёма-Берардуччи.
И "где" он, я чотта даже и не знаю, что ответить ;-)
И что такое "между" ;-)
Это не есть какая-то линия, вдоль которой всё выстраивается.
Kirill Valyavin, [28.07.19 17:24]
[In reply to Timofey Zakrevskiy]
final — финальное представление, т. е. такое, которое уже не надо интерпретировать. Сразу семантика
Nick Ivanych, [28.07.19 17:29]
[In reply to Timofey Zakrevskiy]
Олег сказал "We call this approach final (in contrast to initial) because we represent each object term not by its abstract syntax, but by its denotation in a semantic algebra"