A64m
доводы против того чтоб писать все на низкоуровневом вполне понятны зато
Anonymous
что ты подразумеваешь под "рантайм у скрипта"?
Anonymous
Runtime system?
A64m
но в обсуждаемом случае пусть имплементатор встраиваемого скрипта помучается - пользователь встраивателю в свое приложение зато легче придется
A64m
@anarchostatist да
Anonymous
а что еще можно писать кроме рантайма тогда?
A64m
да я даже не говорю чтоб в него лезть, хотя придется чтоб всякие реплы в приложение встраивать, но даже для того чтоб его билдить хотя бы
A64m
@anarchostatist все остальное. Тайпчекер, компилятор паттерн-матчинга и т.д.
Anonymous
это часть runtime system
Anonymous
в скриптовых языках.
A64m
на низкоуровневом языке надо будет писать ГЦ, даже шедулеры всякие и байткод-интерпретатор уже не обязательно.
A64m
т.е. можно сказать ГЦ
Anonymous
ну ок, допустим какое-то фиктивное разделение рантайма на несколько языков, расскажи тогда доводы против написания всего кода на низкоуровневом языке
A64m
ГЦ можно будет делать только простой, не перемещающий потому что иначе интероп будет тормозной
A64m
потому что дл того чтоб написать язык на чем низкоуровневом надо зиллион человекочасов
Anonymous
источник?
A64m
поэтому эмели пишут в основном на эмелях, хаскели на хаскелях и т.д.
Anonymous
просто ощущается отсутствие каких-либо знаний о расте
Anonymous
т.к. это язык который совмещает низкоуровневость с эргономиками фп языков
A64m
для того чтоб оценить уровень раста достаточно того, что это язык с тощим рантаймом, без обязательного ГЦ, это всегда означает, что все делаешь, ничего нет
A64m
нет, язык с тощим рантаймом не может никакие "эргономики ФП" иметь
Anonymous
ибо имеется очень мощный компилятор
Anonymous
вместо гц там линейные типы, которые среди фпрограммистов многим нравятся
A64m
нет ГЦ -> нет нормального полиморфизма на универсальном представлении, да даже обычных АлгТД нету
A64m
о каких эргономиках тут говорить тогда?
Anonymous
я же говорю что у тебя нет никаких знаний о расте
A64m
То. Что есть контрпримеры какие-то?
Anonymous
конечно
A64m
Какие?
Anonymous
полиморфизм использует систему семейств типов
Anonymous
алгтд там есть самые настоящие
A64m
где там?
Anonymous
ну например там в std есть Maybe
A64m
что значит "полиморфизм использует систему семейств типов"
Vasiliy
третий раз за день в коде на c++ пишу pure вместо return. пятница...
Vasiliy
извините, что врываюсь в ваш разговор со своим оффтопом
A64m
нет, не как в хаскеле. В хаскеле раздельная компиляция для полиморфного кода, полиморфная рекурсия
Anonymous
вот может быть интересно https://doc.rust-lang.org/reference/influences.html
A64m
так мейби-то не рекурсивный. Уже List a = Nil | Cons a (List a) ведь не сделать, верно? Надо будет Cons a (ref (List a)) писать
A64m
@anarchostatist так и речь про имплементацию. Как это все без универсального представления делать?
A64m
ну вот все правильно я угадал
Anonymous
и?
A64m
рекурсии нету - какие это алгТД?
A64m
нет рекурсия рефом "размыкается"
A64m
который в данном случае Box называется
A64m
правильно?
Anonymous
box это поинтер для аллокации на heap
A64m
ну
Anonymous
да
A64m
я про это и говорю
A64m
нормальной семантики для значений как в ФЯ нету, а это чуть ли не основное удобство
Anonymous
The problem with recursive enums is that they don't have a well-defined size. Something like Branch(Branch(Branch(......))) can go on forever, and the whole thing needs to be stored in statically allocated memory -- impossible for something which is possibly infinitely-sized.
A64m
с хвостовой рекурсии тоже проблемы без гц будут
A64m
Так понятно, я с самого начала и говорю "универсальное представление"
A64m
при универсальном представлении размер всегда определен - все размером с указатель
Anonymous
ну, а в низкоуровневом языке требуются компромиссы
Anonymous
или будет использование памяти как у хаскеля
A64m
да я все понимаю
Anonymous
это нежелательно
Vasiliy
с хвостовой рекурсии тоже проблемы без гц будут
gcc успешно компилирует сишный код с хвостовой рекурсией
A64m
но потому и не получается эргономики как в нормальном ФЯ
A64m
Vasiliy только узкий класс
Vasiliy
или гц должен быть не в языке, а в компиляторе?
Влод
зачем так долго топить то за раст? просто ты не потратишь лишних усилий на работу с памятью если задача того не требует
Anonymous
как мне кажется
Vasiliy
а зачем хвостовой рекурсии гц?
Vasiliy
её суть в том, что она на стеке сидит
Vasiliy
да и любая, собственно, рекурсия происходит в стеке
Vasiliy
хвостовая его не увеличивает
A64m
@anarchostatist они не особо преближены, понятно что даже недо АлгТД и недо полиморфизм с недо тайпклассами лучше, чем како-нибудь плюсовое адище, но сравнивать с нормальным ФЯ это несерьезно