LINUX.ORG.RU

Стали доступны исходные коды Idris 2

 , ,


0

4

Теперь Idris 2 написан на самом себе (Idris 1).

https://github.com/edwinb/Idris2

Из новых фич:

  • A core language based on «Quantitative Type Theory» which allows explicit annotation of erased types, and linear types.
  • let bindings are now more expressive, and can be used to define pattern matching functions locally.
  • Names which are in scope in a type are also always in scope in the body of the corresponding definition.
  • Better inference. Holes are global to a source file, rather than local to a definition, meaning that some holes can be left in function types to be inferred by the type checker. This also gives better inference for the types of case expressions, and means fewer annotations are needed in interface declarations.
  • Better type checker implementation which minimises the need for compile time evaluation.
  • New Chez Scheme based back end which both compiles and runs faster than the default Idris 1 back end. (Also, optionally, Chicken Scheme and Racket can be used as targets).
  • Everything works faster :)

Сейчас это пока преальфа, но почти все примеры из книги Type-Driven Development with Idris работают с незначительными изменениями:

https://github.com/edwinb/Idris2/tree/master/tests/typedd-book

Патчи и доработки приветствуются:

https://github.com/edwinb/Idris2/blob/master/CONTRIBUTING.md



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

Ответ на: комментарий от Crocodoom

Сорцы на Idris 1 скомпилируются Idris 2?

да, но пока нет (ц)

kookoo
() автор топика
Ответ на: комментарий от Crocodoom

Нужно сначала собрать Idris 1 из мастера, а потом им собрать Idris 2. В перспективе, Idris 2 будет self-hosted

kookoo
() автор топика
Ответ на: комментарий от hateyoufeel

Но скорее зависимые типы в Haskell запилят чем Idris станет популярным

Но это будет очередная нашлепка на и так уже переусложненый и жирный Хаскелл плюс еще один синтаксис. А вот ядро идриса минимально и изначально было сделано для использования зависимых типов плюс бэкенды клепать просто.

kookoo
() автор топика
Ответ на: комментарий от Crocodoom

Ты отвечаешь не на тот вопрос

Все понял. Пока не весь high-level синтаксис реализован, плюс некоторые дерективы удалены/добавлены.

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

Это всё круто, но у Haskell уже есть критическая масса библиотек и пользователей. Если кто-то не будет продавливать Idris, как, например, Google продавил golang или Mozilla всем присунула Rust, то он так и останется экзотическим язычком.

Плюс, зависимые типы часто лишь добавляют геморроя при сравнительно небольшом профите в программировании.

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

Да я видел, и знаю что блодвен - прототип. Просто у автора давно мысли были по перепилу идриса. Надеюсь на лучшее, ибо первый совсем что-то дно (по сравнению с няшной агдочькой).

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

Тащемта, хачкелевский type families для говнокодинга более чем достаточно, ящитаю. Зачем туда зав. типы пихать - уж не знаю, подозреваю, что не более чем idée fixe такая.

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

Имхо, идрис можно (для начала) применять в местах, где важна корректность, в проектах на других языках, и черех ffi дергать что угодно...

kookoo
() автор топика
Ответ на: комментарий от BRATISLAVA

Тащемта, хачкелевский type families для говнокодинга более чем достаточно, ящитаю. Зачем туда зав. типы пихать - уж не знаю, подозреваю, что не более чем idée fixe такая.

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

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

Имхо, идрис можно (для начала) применять в местах, где важна корректность, в проектах на других языках, и черех ffi дергать что угодно...

Для этого сейчас есть другие, более развитые инструменты.

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

Чтобы сделать тайплевелострадания не такими болезненными.

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

Вот честно, если есть желание верифицировать алгоритм - то для этого уже и есть инструменты, петушок вот например, изабель. Я конечно понимаю, что там далеко не идеальный код генерится, но будто пердолинг с синглтонами лучше. Впиливание в хачкель зависимых типов сделает его только инженерно сложнее, а использовать все ети фичи будут 2.5 борщевара, пусть уж лучше остаётся таким как есть.

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

Дополняя, хачкель же противоречив как žopa, Type : Type, прибитый Y, импредикативности, ну впилят они зависимые типы, так всё равно же шляпа получится.

BRATISLAVA
()

Есть хоть кто-то, кто рад сабжу, и может внятно объяснить почему?

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

Впиливание в хачкель зависимых типов сделает его только инженерно сложнее, а использовать все ети фичи будут 2.5 борщевара, пусть уж лучше остаётся таким как есть.

Я периодически ковыряю исходники GHC. Зависимые типы вряд ли что-то сделают сильно сложнее. А возможно даже это упростит реализацию каких-то вещей.

Хотя, опять же, частично зависимые типы можно заменить прикрученным SMT-солвером через какой-нибудь Liquid Haskell. С его помощью в base, помнится, баги находили.

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

Дополняя, хачкель же противоречив как žopa, Type : Type, прибитый Y, импредикативности, ну впилят они зависимые типы, так всё равно же шляпа получится.

Это вполне ожидаемо, учитывая возраст языка. Тот же C++ за сравнимое время (он появился на каких-то 5 лет раньше Haskell) превратился в куда худшего монстра.

Я, в общем-то, не спорю с недостатками, но в данный момент Haskell is good enough. На Haskell 2.0, если такой появится, никто писать не будет, как никто на Idris сейчас не пишет.

P.S. Что не так с Type in Type? Раньше было куда хуже.

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

А в чём прикол доказывать что-то в инконсистентной системе, особенно когда она позиционируется как хорошая-годная для продакшена? Ладно бы там всяким исследовательским прототипам вроде cubicaltt простительно, на то они и исследовательские.

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

Лишп это же аст в чистом виде. Явно для рептилоидов язык. Хаскель наоборот язык для людей.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.