Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 17 3 12
Примитивная рекурсия Аноним 26/07/25 Суб 22:58:16 3506448 1
17527782684990.png 856Кб, 919x1070
919x1070
Анон, как бы выглядел ЯП, в котором возможны только примитивно-рекурсивные функции?

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

И так анон, как бы он выглядел? Какой бы у него был синтаксис?
Аноним 26/07/25 Суб 23:08:19 3506458 2
Лямбда-исчисление Чёрча?
Аноним 26/07/25 Суб 23:36:29 3506493 3
>>3506458
Лямбда-исчисление позволяет выражать и общерекурсивные функции в том числе (Y-комбинатор). Речь идёт о языке, который допускает примитивную рекурсию, но не допускает общую.

То есть функция вида `f(x) = f(x+1)` не возможна в таком языке, но можно описать функции map, (+), factorial и другие примитивно-рекурсивные функции.
Аноним 27/07/25 Вск 13:52:05 3506736 4
Аноним 28/07/25 Пнд 18:58:13 3507886 5
Аноним 28/07/25 Пнд 19:07:10 3507893 6
image.png 1Кб, 50x43
50x43
P.S. Вот тут
https://www21.in.tum.de/~traytel/papers/fscd16-coind_lang/paper.pdf пишут, что примитивная рекурсия является синонимом структурной. Хз, правда или нет, если да, то в тогда практически любой proof assistant является таким языком. Coq и его клоны построены на структурной рекурсии. Капча намекает, лол.
Аноним 28/07/25 Пнд 21:22:43 3507979 7
Да хуйня эта ваша примитивная рекурсия, и ФП это говно. Аниме, кстати, тоже кал, не смотри его, лучше баб еби.
Аноним 31/07/25 Чтв 05:23:11 3509652 8
Аноним 05/08/25 Втр 16:31:40 3513248 9
Ну что, ОП, уже изучил язык ПЕТУХ (cock)*?

Французы как обычно сдались и переименовали Coq в Rocq. Такой мем загубили, ироды. А изучить советую, лютая годнота.
Аноним 09/08/25 Суб 16:11:55 3516333 10
>>3513248
>лютая годнота
В чем именно годнота?
Аноним 10/08/25 Вск 05:02:50 3516797 11
zombie-rooster.webp 47Кб, 1280x720
1280x720
>>3516333
Единственная в индустрии невсратая система типов, которая ещё и эффективно реализована (привет Lean). Тотальные функции. Встроенный искуственный идиот и нативная поддержка vibe coding'а тактиками, до того, как это стало мейнстримом. Наиболее полная реализация коиндукции. Либы типа https://github.com/math-comp/math-comp
P.S. Туториал: https://softwarefoundations.cis.upenn.edu/lf-current/index.html
Аноним 11/08/25 Пнд 22:43:32 3518053 12
>>3513248
Ну, пока еще только в планах. Но радует, что в Coq есть нихуевое метапрограммирование, в котором можно даже синтаксис собственных литералов объявлять (такое только в Racket/Scheme видел, но там это очень многословно и непонятно реализовано).

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

А нету там никакого IO лол.
Вернее, как: люди моделируют состояние реального мира на чистых функциях и каких-нибудь алгебраических эффектах, доказывают всякие инварианты про эту модель, а потом делают extraction из Coq в Ocaml. К примеру: https://github.com/uwplse/verdi-raft Но это уровень кандидатской примерно.
Я со своими тремя классами церковно-приходской на практике только некоторые чистые алгоритмы про lock-free структуры данных верифицировал, что в целом было не так трудно и поприятнее TLA+.
Аноним 21/08/25 Чтв 13:27:14 3524658 14
>>3506448 (OP)
>только примитивно-рекурсивные функции
>мы можем доказать, что программа всегда завершится
не такая тривиальная задача. императивные и функциональные языки используются потому что там это можно доказать, и это сделано математиками. а вот для рекурсии этого нет
>>3506493
ваше лямбда = говно
>функция вида `f(x) = f(x+1)` не возможна в таком языке
чем сразу делает бесполезным такой язык. во первых это уже не рекурсия по определению, а во вторых без этой конструкции невозможно написать ни одну прикладную программу
например как ты сможешь >описать функции map, (+), factorial и другие примитивно-рекурсивные функции
без этой основной конструкции
получается у тебя базовые примитивные функции не рекурсивные, а потом ты из них пытаешься строить рекурсивные прграммы. это так не работает
Аноним 22/08/25 Птн 08:47:53 3525159 15
While(true) ссыт тебе на ебало
Аноним 22/08/25 Птн 09:26:39 3525173 16
>>3524658
>первых это уже не рекурсия по определению
Примитивная рекурсию это тоже рекурсия, а если быть точнее, частный случай рекурсии.

>а во вторых без этой конструкции невозможно написать ни одну прикладную программу
>например как ты сможешь >описать функции map, (+), factorial и другие примитивно-рекурсивные функции
С помощью конструкции primrec, что-то типа:
let map fn lst = primrec fn lst
Где, lst - любой моноид, то есть то что имеет нулевой элемент.
Для чисел - это 0, для списков - [], для строк "".
primrec имеет аккумулятор, который вернётся, когда функция достигнет нулевого элемента.
Сам primrec функцией не является, а является синтаксический конструкций, типа "let x=y in exp" или "import Module".
Аноним 22/08/25 Птн 09:37:11 3525178 17
Пиздец ты предлагаешь
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов