Leonid 🦇
кроме do
Leonid 🦇
чёрт
A64m
странно, я как-то с особыми проблемами в разных редакторах не сталкивался.
A64m
и do выражение (foo <- bar) нет
Leonid 🦇
у nix-mode вообще проблема с индентацией. Автор не может раздуплить вложенные let in
Aleksei (astynax)
В питоне отступы кратные. И есть индиктор "дальше блок" - :
Leonid 🦇
изменение индентации через s/^ // и s/^/ / вообще круть
A64m
во всех языках со значимыми отступами есть такие индикаторы. вроде let where do и т.д. в хаскеле
Anonymous
https://github.com/mystor/slag/blob/master/examples/enums.slag
Anonymous
лол
Leonid 🦇
в rust меня больше всего выбивает из колеи let бинды с сайдэффектами
Anonymous
let _ = ?
A64m
а в расте есть поддержка блидтулов для таких штук? Чтоб применять препроцессоры, локации ошибок транслировать и т.д.?
Leonid 🦇
let x = foo vs x <- foo
Leonid 🦇
@A64m_qb0 через build.rs
Leonid 🦇
как в кабале, в общем
Leonid 🦇
кроме пары благословенных
A64m
в кабале то только пускатели препроцессора, сорсмапы никак не поддерживаются
Leonid 🦇
ТУЛИНГ НЕ ГОТОВ К УСПЕХУ
Aleksei (astynax)
в rust меня больше всего выбивает из колеи let бинды с сайдэффектами
Раст - процедурный язык. Не надо думать о нём как о странном хаскеле :)
Leonid 🦇
@astynax а не надо let использовать! это может всяким MLщикам и привычно, а мне нет
Leonid 🦇
что им в var или my не нравилось?
Aleksei (astynax)
let, вон, и в JS есть давно
A64m
let это бейсик же
Leonid 🦇
в JS и "стрелочные функции" считаются невероятным изобретением, а не очевидным правильным решением которое надо было сразу вводить
Aleksei (astynax)
И Лисп
A64m
РЕЧЬ ПРО МЕЙНСТРИМ, КАКОЙ ЛИСП ЕЩЕ?
Aleksei (astynax)
Да вообще LET в роли ключевого слова мног где есть. В Расте хоть паттернматчинг в let работает, в отличие от лиспа
Aleksei (astynax)
JS ЭТО МЕЙНСТРИМОВЫЙ ЛИСП ЖИ!
Зигохистоморфный
JS ЭТО МЕЙНСТРИМОВЫЙ ЛИСП ЖИ!
ну если так)) то да https://gist.github.com/xgrommx/e7b69527662bbb0f5443ce8ca4882b72
Leonid 🦇
еще в расте есть if с паттерн матчем, и без else! я вообще с трудом такое могу распарсить
Anonymous
let x = foo vs x <- foo
ну язык не чистый же
Leonid 🦇
Ilia 🌟 мне от этого только хуже становится
A64m
что это вообще означает?
Anonymous
мем
Зигохистоморфный
так и про koka говорить можно
Anonymous
очень легко определить
Leonid 🦇
выглядит погано
A64m
if без else это святое для программиста. Никогда бы не подумал, но постоянно читал на рсдн что это проблема немерле (там if без else называется when)
Anonymous
выглядит погано
не так уж и плохо
Leonid 🦇
when должно быть функцией, amirite?
A64m
и вот прямо программисты писали что жизни от этого никакой нет. when вместо моего любимого if без else? Да как я теперь программировать та буду?
Anonymous
if let Ok(value) = read_line() { println!("{}", value); }
Anonymous
в расте без else подразумевается } else { () }
Leonid 🦇
игрушечный язык, короче
Anonymous
Leonid 🦇
еще в нём типажы (лол) не наследуются, нет приватных членов и конструкторов. и бедненькие возможности для обобщенного программирования
Leonid 🦇
в общем D круче
Ignat
тайпклассы тоже не наследуются, но ведь констрейнты никто не отменял
A64m
любопытно, что D нравится Попову, который видел все 5-6 более-менее приличных ЯП, типичный любитель D, конечно, видел 0
Anonymous
и на D тем более, брр
Leonid 🦇
ну закинуть удочку мне это не мешает
Anonymous
и смысл
Leonid 🦇
чисто поржать
Leonid 🦇
или вот, например https://i.redd.it/mvhki9n5nw301.png
Anonymous
🤔
Anonymous
когда мне кто-то говорит что D можно сравнивать с растом я показываю этот код: import std.variant; import std.stdio; alias None = typeof(null); alias Maybe(T) = Algebraic!(T,None); void test(T)(Maybe!T val) { val.visit!( (T i) => writeln("Some ", i), (None) => writeln("None") ); } void main() { Maybe!int val = 1; test!int(val); val = null; test!int(val); }
Vladislav
Leonid 🦇
@int_index а что в rust нет супер-типажей? Есть же вроде?
Vladislav
компилятор даже заботливо вытащит один словарик из другого, когда надо, или положит
Vladislav
@int_index а что в rust нет супер-типажей? Есть же вроде?
я в контексте Haskell отрицаю утверждение, что тайпклассы не наследуются
Vladislav
в Расте вообще traits
Leonid 🦇
типажи. а хаскеле классы типов. и сверх-классы типов
Anonymous
struct Id(i64); trait IDObject { fn id(Self) -> Id; } trait User: IDObject { fn name(Self) -> String; } let user = make_user("memes"); println!("{} {}", user.id(), user.name());
Leonid 🦇
ну вот, сверх-типажи.
Vladislav
убертип
Leonid 🦇
UberTypklasse
Anonymous
кстати очень интересно чего не хватает в контексте обобщенного программирования
Leonid 🦇
> (D has) 10x better than any other system language at generic and generative programming. D's static introspection, compile-time evaluation, and mixin-driven code generation combine to a powerful cocktail that is very difficult to mix right in other languages, be they new or extant; at this game, Go is so out of depth it doesn't even get the point; C++17 is hopelessly lost in the woods; and Rust is just trying to dabble.
Leonid 🦇
https://www.quora.com/Which-language-has-the-brightest-future-in-replacement-of-C-between-D-Go-and-Rust-And-Why/answer/Andrei-Alexandrescu изо рта самого коня
Leonid 🦇
про ржавого: Foreign syntax. Rust's syntax is different, and there's no apparent advantage to the difference. This is irritating for folks coming from Algol-style languages, who need to deal with a gratuitously different syntax in addition to getting the resource bookkeeping right.
Leonid 🦇
лол, т.е. отход от ML ничего не дал синтаксису
Anonymous
мне это ничего не говорит
Anonymous
приведи конкретную фичу