Rust и иже с ним

Nov 17, 2014 11:22

Как это было у классиков: "Джва года ждал такой язык, суть токова...". На самом деле, я тут, вместе с остальным прогрессивным человечеством, активно обнюхиваю Rust, поддавшись мощной PR-компании. Есть даже какие-то мысли, но писать, как обычно, лень (или, как это щас модно называть: "У меня прокрастинация ( Read more... )

code, rust, mozilla, review

Leave a comment

Comments 28

dmytrish November 17 2014, 09:03:22 UTC
и, в целом, подхода: "о да, накажи меня за мои многочисленные ошибки, строгий компилятор".
- ну что же вы так, может кому-то нравится поухаживать, подобиваться, завоевать внимание, поводить даму на свидания и устроить романтический вечер, а не раздвигать ей ноги через десять минут знакомства. Но, конечно, всему свое время и обстоятельства.

Reply


thesz November 17 2014, 11:39:16 UTC
"разрастаются деревья match-ей"

Там что, даже монад нет?

Reply

swizard November 17 2014, 13:11:48 UTC
В смысле, синтаксического сахара для монад? Не, нету.

Но там относительно неплохие макры, может, ими можно что-то изобразить.

Reply

thesz November 17 2014, 13:16:43 UTC
Именно классов. И операторов.

case x of
Just x -> case z x of
Just y -> ...
Nothing -> Nothing
Nothing -> Nothingможно превратить в
x >>= \x -> z x >>= ...Синтаксический сахар не очень нужен. А вот ФВП нужны.

Пока твоё описание выглядит, как Си + некий SMT решатель, посыпанный сверху алгебраическими типами.

Reply

swizard November 17 2014, 13:50:18 UTC
Есть методы типа and_then, но без сахара ими всё равно неудобно пользоваться.

Прямолинейная реализация монад через фвп осложняется тем, что нельзя так просто взять и вернуть замыкание, когда у тебя нет GC, а вместо этого есть владеющие указатели.

Reply


anonymous November 17 2014, 13:41:55 UTC
> С чем-то мириться получается не очень: например, из-за обработки ошибок через возврат Option/Result-ов (аналог Maybe/Either) разрастаются деревья match-ей.

Сейчас как-то начали бороться с этим, но попытки выглядят довольно неуклюже, а код превращается в ад из try!() макросов.

http://lucumr.pocoo.org/2014/10/16/on-error-handling/

Reply

swizard November 17 2014, 13:53:35 UTC
Ага, я читал :) По-моему, всё равно неизбежно монадами закончат.

Reply


thedeemon November 17 2014, 16:55:47 UTC
О, а чего там про "выравнивания, кэш-линии, вот это вот всё"?
А то в плюсах совсем фигово с этим, даже толком про выравнивение вектора байт не скажешь.

Reply

swizard November 18 2014, 06:32:07 UTC
Ну там как бы всё, что есть в сях, плюс все intrinsics в стандарте, а не в расширениях, есть модуль с simd, куча функций и атрибутов для работы с памятью, ну, как бы всему этому добру уделено достаточное внимание.

По поводу задать выравнивание в стандартных коллекциях -- хз, честно говоря, по-моему, нельзя :) Но можно задать вектор на уже выравненом регионе, насколько я помню. А стандартный аллокатор у них выделяет память через posix_memalign.

Но, на самом деле, в русте векторы особо не таскают (тем более, что вектор можно только либо насовсем отдать, либо "одолжить"), там носят слайсы: пару из указателя *T и количество элементов.

Reply


Отличная статья ext_2883552 November 19 2014, 10:44:26 UTC
Отличная статья! Спасибо автору! Продолжайте в том же духе!

Reply


Leave a comment

Up