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 🦇
ТУЛИНГ НЕ ГОТОВ К УСПЕХУ
Alexander
Leonid 🦇
@astynax а не надо let использовать! это может всяким MLщикам и привычно, а мне нет
Leonid 🦇
что им в var или my не нравилось?
Aleksei (astynax)
let, вон, и в JS есть давно
A64m
A64m
let это бейсик же
Leonid 🦇
в JS и "стрелочные функции" считаются невероятным изобретением, а не очевидным правильным решением которое надо было сразу вводить
Aleksei (astynax)
И Лисп
A64m
РЕЧЬ ПРО МЕЙНСТРИМ, КАКОЙ ЛИСП ЕЩЕ?
Aleksei (astynax)
Да вообще LET в роли ключевого слова мног где есть. В Расте хоть паттернматчинг в let работает, в отличие от лиспа
Aleksei (astynax)
JS ЭТО МЕЙНСТРИМОВЫЙ ЛИСП ЖИ!
Leonid 🦇
еще в расте есть if с паттерн матчем, и без else! я вообще с трудом такое могу распарсить
Anonymous
Leonid 🦇
Ilia 🌟 мне от этого только хуже становится
A64m
что это вообще означает?
Anonymous
мем
Зигохистоморфный
так и про koka говорить можно
Anonymous
Anonymous
очень легко определить
Leonid 🦇
выглядит погано
A64m
if без else это святое для программиста. Никогда бы не подумал, но постоянно читал на рсдн что это проблема немерле (там if без else называется when)
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
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
в Расте вообще 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
мне это ничего не говорит
Anonymous
приведи конкретную фичу
Anonymous