Вопросы с тегом «functional-programming»

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

118
Полезна ли теория категорий для обучения функциональному программированию?

Я изучаю Haskell, и я очарован языком. Однако у меня нет серьезных знаний по математике или CS. Но я опытный программист. Я хочу изучить теорию категорий, чтобы стать лучше на Хаскеле. Какие темы в теории категорий я должен изучить, чтобы обеспечить хорошую основу для понимания...

58
Зависимые типы против типов уточнения

Может ли кто-нибудь объяснить разницу между зависимыми типами и типами уточнения? Насколько я понимаю, тип уточнения содержит все значения типа, выполняющего предикат. Есть ли особенность зависимых типов, которая их отличает? Если это поможет, я натолкнулся на уточненные типы через проект Liquid...

38
Как моделируется сложность алгоритма для функциональных языков?

Сложность алгоритма разработана так, чтобы не зависеть от деталей более низкого уровня, но она основана на императивной модели, например, доступ к массиву и изменение узла в дереве занимают O (1) времени. Это не так в чисто функциональных языках. Список Haskell требует линейного времени для...

32
Что такое краткое, но полное объяснение чисто / зависимой системы типов?

Если что-то простое, то это должно быть полностью объяснимо несколькими словами. Это можно сделать для λ-исчисления: Λ-исчисление - это синтаксическая грамматика (в основном, структура) с правилом редукции (что означает, что процедура поиска / замены неоднократно применяется к каждому вхождению...

30
Как функционально-реактивное программирование и модель актера связаны друг с другом?

FRP - это потоковая передача событий и поведения через чистые функции. Модель Actor - по крайней мере, как реализована в Akka - предназначена для потоковой передачи неизменяемых сообщений (которые можно считать дискретными событиями) через потенциально нечистые объекты, называемые акторами. Так что...

29
Является ли лямбда-исчисление чисто синтаксическим?

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

25
Как реализовать интерпретатор пролога на чисто функциональном языке?

Есть ли ясная ссылка с псевдокодом о том, как реализовать интерпретатор Пролога на чисто функциональном языке? То, что я обнаружил до сих пор, похоже, имеет дело только с императивными языками, является просто демонстрацией реализованного самого Пролога или не предлагает никакого конкретного...

24
Какова связь между функторами в SML и теории категорий?

Вдоль той же мысли, что и это высказывание Андрея Бауэра в этом ответе Сообщество Haskell разработало ряд методов, основанных на теории категорий, из которых монады наиболее известны, но их не следует путать с монадами . Какова связь между функторами в SML и функторами в теории категорий? Поскольку...

22
Выражение вычислений такое же, как монада?

Этот вопрос был перенесен из переполнения стека, поскольку на него можно ответить в разделе «Информатика в стеке». Мигрировал 5 лет назад . Я все еще изучаю функциональное программирование (с помощью f #), и недавно я начал читать о вычислительных выражениях. Я до сих пор не до конца понимаю эту...

22
Что подразумевается под теорией категорий, еще не знает, как обращаться с функциями более высокого порядка?

Читая Удай Редди ответ на Что такое соотношение между функторов в SML и теории категорий? Удай заявляет Теория категорий еще не знает, как обращаться с функциями более высокого порядка. Когда-нибудь, это будет. Поскольку я думал, что теория категорий способна послужить основой для математики, то...

22
Почему мы используем постоянные структуры данных в функциональном программировании?

Функциональное программирование использует постоянные структуры данных и неизменные объекты. Мой вопрос: почему важно иметь такие структуры данных здесь? Я хочу понять на низком уровне, что произойдет, если структура данных не является постоянной? Будет ли программа зависать...

21
Теория категорий (не) для программирования?

Изучив Haskell и другие не очень чистые языки FP, я решил прочитать о теории категорий. Получив хорошее понимание теории категорий, я начал думать о том, как концепции теории категорий могут быть использованы для разработки программ, но, как бы я ни старался, кажется, это не тот путь. Проведя много...

21
Лямбда-исчисление вне функционального программирования?

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

19
Функция ML типа 'a ->' b

Наш профессор попросил нас подумать о функции в OCaml, которая имеет тип 'a -> 'b т.е. функция одного аргумента, которая может быть чем угодно, и которая может возвращать что угодно другое. Я думал об использовании raiseв функции, которая игнорирует ее аргумент: let f x = raise Exit Но профессор...

19
Почему функциональное программирование не исследовало динамические деревья?

Динамические деревья играют важную роль в решении таких проблем, как сетевые потоки, динамические графы, комбинаторные задачи («Динамические деревья на практике» Тарьяна и Вернека) и недавно объединенные словари («Простой объединяемый словарь» Адама Карчмара), Под динамическими деревьями я ссылаюсь...

19
Какие классы структур данных можно сделать постоянными?

Постоянные структуры данных являются неизменными структурами данных. Операции над ними возвращают новую «копию» структуры данных, но измененную операцией; старая структура данных остается неизменной. Эффективность обычно достигается за счет совместного использования некоторых базовых данных и...

19
Почему важно, чтобы функции были анонимными в лямбда-исчислении?

Я смотрел лекцию Джима Вейриха « Приключения в функциональном программировании ». В этой лекции он вводит понятие Y-комбинаторов, которое, по существу, находит неподвижную точку для функций более высокого порядка. Один из мотивов, как он упоминает, состоит в том, чтобы иметь возможность выражать...

16
Изучение теории языка программирования

Недавно я чрезвычайно заинтересовался пониманием и доказательством аспектов (функциональных) языков программирования. Однако, как я углублюсь в глубину, такие вещи, как исчисление , теория категорий и денотационная семантика, немного трудно найти без надлежащего объяснения.λλ\lambda Я читаю SICP...

16
Как сделать язык гомоиконическим

Согласно этой статье следующая строка кода на Лиспе выводит «Hello world» на стандартный вывод. (format t "hello, world") Lisp, который является гомоиконическим языком , может обрабатывать код как данные следующим образом: Теперь представьте, что мы написали следующий макрос: (defmacro backwards...

15
Нет наивных множеств Теоретические модели полиморфного лямбда-исчисления?

В статье Филиппа Уодлера о теоремах для свободного он утверждает в разделе 2 о параметричности, что нет наивных теоретико-множественных моделей полиморфного лямбда-исчисления В наивной теоретико-множественной модели типы - это множества, а функции - теоретико-множественные функции, что...