cNoNim
let foo = bar
let args :[str] = ["snm","ololo"]
Methos
ты наверное перепутал, не на Хаскель, а на ML
Methos
> А кому стандарт фирмы мешал ошибаться хоть раз?
Он мешал наворотить такое, что другие не смогли бы вкурить.
Поэтому вообще всякие сильно высокоуровневые фишки сразу же отлетают.
Тот факт, что другие вкуривают в код, абсолютно ничего не говорит о его корректности. Может быть, они думают, что вкуривают, а на самом деле не видят багу ( с многопоточным кодом такое легко достижимо ). Необходимость в контрактах обусловлена тем, что люди часто не читают документацию, либо она не соответствует действительности, или же работа кода основывается на неком предположении, которое явно не указывается ни в комментах, ни в коде. А еще спецификации интерфейсов тупо недостаточно для того, чтобы знать, как поведет себя используемый класс/функция в роли параметра шаблона или параметра функции.
Я так понимаю, людям тупо лень писать контракты. При этом им лень делать проверку верности параметров в каждой функции, что выливается в многочасовой дебаг, т.к. параметры были таковы, то индекс ушел за границы массива в доступную память. А баг проявил себя через минут десять после такого доступа. Все еще считаете, что контракты не нужны? Тогда мы идем к вам!
А программинг без проверки предположений о входящих параметрах это "программирование, управляемое надеждой".
Methos
> и главное ни слова о языке Rust...
пропустил вторую страницу?
> закрыть что-ли тему, раз никому дела нет?
и сам ничего не постил релевантного... ждал, пока появятся те, кому есть дела и будут тут постить перевод документации на русский? рановато пока, язык же нестабилен еще.
судя по наличию лоу-лвл фич вроде указателей, генерикам и таскам, он прицеливается на зону с++ и еще чуть выше ( то есть конкурент Go )
Если не умрет - через лет 6 возможно откопаем тред =)
В любом случае интересно, кто поделит между собой место с++
Интересные фичи в rust тоже есть ( не видел такого нигде ):
http://doc.rust-lang.org/doc/rust.html#typestate-system
Субъективно, я пока что за Rust, нежели за Go или D.
Methos
> и сам ничего не постил релевантного... ждал, пока появятся те, кому есть дела и
> будут тут постить перевод документации на русский?
я свободно читаю технический английский, так что не по адресу.
самая интересная фича это task'и (имхо), но typestate тоже хорош.
синтаксис мусорный, перегруженный.
как замена С/С++ язык не предполагается, потому что ему нужен его же рантайм в dll (по крайней мере пока).
в целом вызывает смешанные чувства, что-то типа "на безрыбье и рак - рыба".
Что с обработкой ошибок в Rust? Таски просто молча отмирают, если что-то пошло не так?
UP
Rust всё ещё актуален, или тему можно закопать обратно?
неактуально по-моему. Желания даже нет его смотреть. Куча булшита как про Д и ГО.
UP.
Есть такой код:
struct A<'l> { a : &'l i32 } fn Do<'l>( a : &'l mut Vec<A<'l>>, b : &'l i32 ) { a.push( A{ a : b } ); } fn main() { let mut v : Vec<A> = Vec::new(); { let x = 42; Do( &mut v, &x ); } }
И выхлоп конпелятора:
А вот объявление класса Vec:
https://github.com/rust-lang/rust/blob/master/src/libcollections/vec.rs#L272
Вопрос вот в чём: откуда компилятор знает, что в Vec<T> хранятся значения типа T и как он производит распространение времён жизни ссылок в типе T на тип Vec<T>?
Panzerschrek[CN]
> fn Do<'l>( a : &'l mut Vec<A<'l>>, b : &'l i32 )
Ой жесть. Зачем так жить?
jaguard
> Ой жесть. Зачем так жить?
Зато тебе не надо думать над управлением памятью, компилятор всё разрулит за тебя. Вот ты только сначала потрать время на то, чтобы подробно объяснить зачем тебе эта переменная, что и зачем ты будешь в ней хранить и куда передавать. Если вдруг однажды случится, что назначение поменяется и придётся изменить половину программы - ну извиняй, сам же написал.
Хаскель напоминает. Там тоже атрибуты чистоты грязноты надо протянуть через весь код. А потом если ещё где-то надо добавить грязи - переписывай пол проекта)
Zefick
>>> fn Do<'l>( a : &'l mut Vec<A<'l>>, b : &'l i32 )
>> Ой жесть. Зачем так жить?
> Зато ...
Какое может быть "зато" с таким говнищем?
vater
> Какое может быть "зато" с таким говнищем?
Ну как минимум тут нет template<typename>, за это уже можно многое простить. Хотя в принципе этого говнища кроме крестов и так нигде нет.
Наверное можно привыкнуть при наличии достаточной мотивации. Не писать на крестях уже неплохо тянет на таковую для тех, кто не осилил шарп.
Тема в архиве.