F # и нечеткая логика

Я знаю, это может показаться странным, но я хотел бы узнать об одном в этом новом мире, в который входит Microsoft Visual F #. Есть много применений этого языка, я собираюсь узнать, что касается парсинга, функционального программирования, структурированного программирования... Но как насчет искусственного интеллекта?

Существуют ли какие-либо приложения для Fuzzy Logic? Является ли F # хорошим языком для использования в приложениях с нечеткой логикой?

В университете мы изучаем Пролог и подобные языки. Prolog способен создавать сложный запрос в очень простых и коротких выражениях (воспользовавшись предикатами и фактами). Может ли F # сделать это?

Спасибо заранее.

Ответ 1

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

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

F # не имеет прямой поддержки для обратного отслеживания, но довольно легко написать алгоритмы, основанные на обратном трассировке с использованием рекурсии (которая является основным механизмом управления потоком как в F #, так и в Prolog).

Кроме того, в F # можно реализовать язык специфического для логического программирования. Это означает, что вы реализуете что-то вроде Prolog внутри F #, а затем записываете свои алгоритмы поиска, используя этот мини-язык в F # (возможно, используя другие функции F # по мере необходимости). Дополнительную информацию о подобных проблемах можно найти в этом вопросе.

Ответ 2

F # - это язык общего назначения с некоторыми хорошими языковыми функциями, такими как выражение вычисления /Monad и quotation. Вы можете предположить, что он имеет ту же мощность, что и С#.

Это не похоже на Matlab или R, где встроено множество предварительно реализованных библиотек. Если вы хотите внедрить библиотеку Fuzzy Logic или другие алгоритмы AI с нуля, F # - очень хороший язык для вас, поскольку его языковые функции облегчают жизнь.

Но если вы просто хотите использовать библиотеку Fuzzy logic, то использование других языков или специализированных систем будет более подходящим, потому что F # или .Net вообще не имеют библиотек очень хорошего качества в этом аспекте.