Двач.hk прислал битые данные.
Вы видите копию треда, сохраненную 25 августа в 16:29.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
17527782684990.png856 Кб, 919x1070
Примитивная рекурсия 3506448 В конец треда | Веб
Анон, как бы выглядел ЯП, в котором возможны только примитивно-рекурсивные функции?

Проимущества такого языка очевидны - мы можем доказать, что программа всегда завершится (ибо любая программа на таком языка терминальна), а функции которые нельзя выразить в таком языке всё равно находятся в области кукаретики (не имеют отношения к real world программированию). Все так или иначе используют map, fold, filter и другие примитивно-рекурсивные комбинаторы.

И так анон, как бы он выглядел? Какой бы у него был синтаксис?
2 3506458
Лямбда-исчисление Чёрча?
3 3506493
>>06458
Лямбда-исчисление позволяет выражать и общерекурсивные функции в том числе (Y-комбинатор). Речь идёт о языке, который допускает примитивную рекурсию, но не допускает общую.

То есть функция вида `f(x) = f(x+1)` не возможна в таком языке, но можно описать функции map, (+), factorial и другие примитивно-рекурсивные функции.
4 3506736
5 3507886
>>06448 (OP)
Я не настоящий сварщик, но miniagda с sized types не попадает попадает в класс primitive recursion? https://www.cse.chalmers.se/~abela/miniagda/
image.png1 Кб, 50x43
6 3507893
P.S. Вот тут
https://www21.in.tum.de/~traytel/papers/fscd16-coind_lang/paper.pdf пишут, что примитивная рекурсия является синонимом структурной. Хз, правда или нет, если да, то в тогда практически любой proof assistant является таким языком. Coq и его клоны построены на структурной рекурсии. Капча намекает, лол.
7 3507979
Да хуйня эта ваша примитивная рекурсия, и ФП это говно. Аниме, кстати, тоже кал, не смотри его, лучше баб еби.
8 3509652
>>06448 (OP)
Примерно как Рефал.
9 3513248
Ну что, ОП, уже изучил язык ПЕТУХ (cock)*?

Французы как обычно сдались и переименовали Coq в Rocq. Такой мем загубили, ироды. А изучить советую, лютая годнота.
10 3516333
>>13248

>лютая годнота


В чем именно годнота?
zombie-rooster.webp47 Кб, 1280x720
11 3516797
>>16333
Единственная в индустрии невсратая система типов, которая ещё и эффективно реализована (привет Lean). Тотальные функции. Встроенный искуственный идиот и нативная поддержка vibe coding'а тактиками, до того, как это стало мейнстримом. Наиболее полная реализация коиндукции. Либы типа https://github.com/math-comp/math-comp
P.S. Туториал: https://softwarefoundations.cis.upenn.edu/lf-current/index.html
12 3518053
>>13248
Ну, пока еще только в планах. Но радует, что в Coq есть нихуевое метапрограммирование, в котором можно даже синтаксис собственных литералов объявлять (такое только в Racket/Scheme видел, но там это очень многословно и непонятно реализовано).

Правда пока не совсем понятно, как это в реалворлд будет работать. Как только у нас появляется I/O система типов идёт нахуй, и эксепшены должны оборачиваться в Maybe или `try{} catch(){}`, и обработку исключительных случаев берет на себя программист. А так в теории можно написать такой код, который еще на этапе компиляции не допустит, к примеру, деление на ноль.
13 3518515
>>18053

> Как только у нас появляется I/O



А нету там никакого IO лол.
Вернее, как: люди моделируют состояние реального мира на чистых функциях и каких-нибудь алгебраических эффектах, доказывают всякие инварианты про эту модель, а потом делают extraction из Coq в Ocaml. К примеру: https://github.com/uwplse/verdi-raft Но это уровень кандидатской примерно.
Я со своими тремя классами церковно-приходской на практике только некоторые чистые алгоритмы про lock-free структуры данных верифицировал, что в целом было не так трудно и поприятнее TLA+.
14 3524658
>>06448 (OP)

>только примитивно-рекурсивные функции


>мы можем доказать, что программа всегда завершится


не такая тривиальная задача. императивные и функциональные языки используются потому что там это можно доказать, и это сделано математиками. а вот для рекурсии этого нет
>>06493
ваше лямбда = говно

>функция вида `f(x) = f(x+1)` не возможна в таком языке


чем сразу делает бесполезным такой язык. во первых это уже не рекурсия по определению, а во вторых без этой конструкции невозможно написать ни одну прикладную программу
например как ты сможешь >описать функции map, (+), factorial и другие примитивно-рекурсивные функции
без этой основной конструкции
получается у тебя базовые примитивные функции не рекурсивные, а потом ты из них пытаешься строить рекурсивные прграммы. это так не работает
15 3525159
While(true) ссыт тебе на ебало
16 3525173
>>24658

>первых это уже не рекурсия по определению


Примитивная рекурсию это тоже рекурсия, а если быть точнее, частный случай рекурсии.

>а во вторых без этой конструкции невозможно написать ни одну прикладную программу


>например как ты сможешь >описать функции map, (+), factorial и другие примитивно-рекурсивные функции


С помощью конструкции primrec, что-то типа:
let map fn lst = primrec fn lst
Где, lst - любой моноид, то есть то что имеет нулевой элемент.
Для чисел - это 0, для списков - [], для строк "".
primrec имеет аккумулятор, который вернётся, когда функция достигнет нулевого элемента.
Сам primrec функцией не является, а является синтаксический конструкций, типа "let x=y in exp" или "import Module".
17 3525178
Пиздец ты предлагаешь
Обновить тред
Двач.hk прислал битые данные.
Вы видите копию треда, сохраненную 25 августа в 16:29.
Можете попробовать обновить страницу, чтобы увидеть актуальную версию.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски