LINUX.ORG.RU

Rust и полиморфизм высших порядков

 ,


0

4

http://hydrocodedesign.com/2014/04/02/higher-kinded-types/
Ъ: со временем, каждый прогрессивный язык становится хаскеллем. Динозавры же превращаются в COBOL и PL/I.

Слово «haskell» вызывает у вас дискомфорт? Чувствуете тревогу при одном только виде «class Monad m where»? СТРЕЛКИ заставляют вас просыпаться в холодном поту?

Полиморфизм высших порядков уже идёт к вам. Кстати, к программистам на Scala он уже давно пришёл.

Обсуждение статьи на reddit'е: http://www.reddit.com/r/rust/comments/2212j2/higherkinded_polymorphism/. Как видно, никто не против, только просят не пугать перебежчиков из С++ страшными словами вроде «монады».

Ответ на: комментарий от quantum-troll

Тоесть я зря ждал апреля и это нихрена не релиз :(

anonymous ()
Ответ на: комментарий от anonymous

Ну, возможно они всё-таки перестанут ломать API так часто.

quantum-troll ★★★★★ ()

Когда уже 1.0 будет?

Deleted ()
Ответ на: комментарий от quantum-troll

И советуют начинать использовать язык поскорее, пока нет никакой обратной совместимости. Прототипы там всякие попробовать написать. А ты выпустят-таки версию 1.0, народ повалит толпами и тогда выяснится еще куча косяков там и тут, а их уже не так-то просто поправить будет, как сейчас.

ozkriff ()
Ответ на: комментарий от ozkriff

Сложно использовать язык, в котором API ломают каждую неделю. Стоило бы поосторожнее с этим.
А то только одни language enthusiasts и остаются.

quantum-troll ★★★★★ ()
Ответ на: комментарий от quantum-troll

Сложно использовать язык, в котором API ломают каждую неделю. Стоило бы поосторожнее с этим.

Там не каждую неделю, а каждый второй комит в mozilla/rust ломает обратную совместимость. Почему именно ты считаешь, что это плохо?

ozkriff ()

со временем, каждый прогрессивный язык становится хаскеллем

[–] kibwen 7 очков 28 дней назад
It is my greatest nightmare that anyone start thinking that Rust is «C meets Haskell». Our ultimate all-encompassing goal here is to make low-level programming safer, not to make high-level programming more bracey. Maximal expressiveness is not a goal, and maximal concision is likewise not a goal.

http://www.reddit.com/r/rust/comments/1zpzql/curryingpartial_function_applica...

ozkriff ()

Можете излагать свою мысль кратко и понятно

vertexua ★★★★☆ ()
Ответ на: комментарий от ozkriff

Да, а ещё The Rust Programming Language does not have monads (заголовок реддита). Но мы же все понимаем, что нельзя просто взять и избежать неизбежного.

quantum-troll ★★★★★ ()
Ответ на: комментарий от ozkriff

А то выпустят-таки версию 1.0, народ повалит толпами и тогда выяснится еще куча косяков там и тут, а их уже не так-то просто поправить будет, как сейчас.

Имхо, слом совместимости нужно публично запланировать. То есть в момент релиза 1.0 объявить, что:
1. Через годик-другой будет выпущен 2.0, с несовместимыми исправлениями изъянов.
2. Не смотря на это, ветка 1.0 будет поддерживаться и ограниченно развиваться на протяжении 5 лет.

Вот тогда народу станет не страшно писать свои прототипы: если в 1.0 конкретного пользователя всё устраивает, то он волен остаться на 1.0, он не потеряет вложенного труда.

Manhunt ★★★★★ ()
Ответ на: комментарий от quantum-troll

Да, именно так. Проблема питон3 в том, что он никаких заметных улучшений относительно питон2 своим пользователям не предлагает.

Manhunt ★★★★★ ()
Последнее исправление: Manhunt (всего исправлений: 1)

Нинужно. high-kind полиморфизм ест,ь уже хз сколько но никто пока не придумал ни одного примера использования.

anonymous ()

Но ведь в Rust _нет_ higher-kinded types.

tailgunner ★★★★★ ()
Ответ на: комментарий от Manhunt

Насколько я понимаю, они так и хотят. Разве что я не уверен в «ограниченно развиваться на протяжении 5 лет».

Другой вопрос, что они хотят выпустить 1.0 как можно позже, что бы она была более зрелой. Все таки делать изменения в версии версии 2.0 намного дороже, чем до версии 1.0, логично же.

ozkriff ()
Ответ на: комментарий от ozkriff

делать изменения в версии версии 2.0 намного дороже, чем до версии 1.0

Почему? Если не стоит задачи обеспечить совместимость.

Manhunt ★★★★★ ()
Ответ на: комментарий от Manhunt

Если не стоит задачи обеспечить совместимость.

Если она не стоит, получается Python 3, так что в Rust она очень даже стоит.

tailgunner ★★★★★ ()
Ответ на: комментарий от Manhunt

Даже если для версии 2.0 обеспечение обратной совместимости не является приоритетом, его все равно надо очень серьезно учитывать. Сейчас можно из-за мелочи сделать большое изменение, а тогда ломать чего-то можно только из-за очень крупных косяков.

Ну как с питоном3 - исправления небольших косяков не стоят таких больших обратно несовместимых изменений.

ozkriff ()
Ответ на: комментарий от tailgunner

Python3 получается когда «the most drastic improvement is the better Unicode support».

Manhunt ★★★★★ ()
Ответ на: комментарий от tailgunner

Спасибо за развернутый, аргументированный ответ. Ты меня переубедил.

Manhunt ★★★★★ ()
Последнее исправление: Manhunt (всего исправлений: 1)
Ответ на: комментарий от Manhunt

Ты меня переубедил.

У меня не было такого намерения, но тоже неплохо.

tailgunner ★★★★★ ()

Так давно же хотели добавить HKT, к чему эта тема?

theNamelessOne ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.