10
голосов
6ответов
1831 просмотров

Шаблоны для функционального, динамического и аспектно-ориентированного программирования

У нас есть очень хорошая книга GoF (Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования) о шаблонах в объектно-ориентированном программировании, а также множество статей и ресурсов в Интернете по этой теме. Есть ли книги (статьи, рес...

15
голосов
7ответов
1953 просмотров

Функциональный Clojure или императивный Groovy более читабельны?

Хорошо, теперь никаких жульничеств. Нет, правда, уделите минуту или две и попробуйте это. Что делают "позиции"? Изменить: упрощено в соответствии с предложением cgrand. (defn redux [[current next] flag] [(if flag current next) (inc next)]) (defn positions [coll] (map first (reduct...

1
голосов
1ответов
578 просмотров

Управление общим ресурсом в стиле функционального программирования на JavaScript

Как парадигма функционального программирования работает с общими ресурсами, которые должны поддерживать состояние? У меня есть программа JavaScipt, которая разрешает доступ нескольким вызывающим абонентам к общему ресурсу, в данном случае к аутентифицированному сеансу HTTP. У ресурса есть ...

10
голосов
9ответов
780 просмотров

Примеры того, как функциональные программы "пишут себя сами" посредством анализа типов

(Предыстория: я думал о том, чтобы сделать презентацию по F # и функциональному программированию. Исходя из опыта, я думаю, что "вау" фактора сопоставления с образцом и вывода типов не обязательно достаточно, чтобы противодействовать "справке" ! 'фактор «где мои фигурные скобки и точки с запято...

10
голосов
2ответов
669 просмотров

Можно ли использовать в `flip` унарную функцию вместо двоичной?

Тип функции Prelude flip: flip :: (a -> b -> c) -> b -> a -> c То есть, требуется одна двоичная функция и два аргумента. Тип функции Prelude id: id :: a -> a Но тип flip id: flip id :: a -> (a -> b) -> b Как можно применить flip к id, если id - ...

3
голосов
5ответов
378 просмотров

Как правильно управлять гибкими, типизированными, неизменяемыми структурами данных в Scala?

Сейчас у меня есть такие классы: abstract class Record { // Required fields val productCode:Option[String] val price:Option[Double] // Optional fields val notes:Option[String] = None val used:Option[Boolean] = Option(false) } Затем создайте их: val r = new Record { overr...

1
голосов
3ответов
538 просмотров

Php: функциональный стиль, легкие альтернативы разделению проблем в шаблонах OO MVC?

Проблема: У меня есть устаревшее приложение php , которое является не имеет определенного стиля (некоторые объектно-ориентированные проекты, библиотеки функций, некоторые шаблоны, без шаблонов), которые я медленно переписываю, очищаю и добавляю. Когда я ввел шаблоны в систему, сразу с...

1
голосов
2ответов
162 просмотров

Что такое ASP.net с точки зрения FP?

Может быть, я буду выглядеть странно.Не стесняйтесь редактировать и т. Д. Что такое ASP.net с точки зрения FP? Я изучаю FP в данный момент и чувствую себя довольно запутанным, потому что я не могу разделить технологию, которую я использую каждый день, буквально ASP.Net, на несколько логических...

5
голосов
6ответов
3935 просмотров

Начало работы со стандартным машинным обучением

Я ищу какое-то руководство "ML для начинающих" - до сих пор Google привел меня к некоторым малоизвестным спискам рассылки или полному тексту. Проблема в том, что у меня пока нет опыта функционального программирования, и разобраться в концепциях оказалось гораздо труднее, чем ожидалось. Наприм...

50
голосов
7ответов
6855 просмотров

Clojure: как узнать арность функции во время выполнения?

Учитывая объект или имя функции, как я могу определить его арность?Что-то вроде (arity func-name). Надеюсь, что есть способ, поскольку арность занимает центральное место в Clojure

1
голосов
3ответов
1766 просмотров

Вопрос Haskell Noob: что не так с моей функцией добавления?

Я пытаюсь написать функцию добавления Haskell ... Вот что у меня есть: myappend :: [a] -> [a] -> [a] myappend [] x = x myappend [x:xs] y = x : myappend xs y Но это выдает ошибку: Происходит проверка: невозможно построить бесконечный тип: a = [a] При обобщении типа (ов) для `...

9
голосов
4ответов
5283 просмотров

Схема: реализация композиции с n аргументами с использованием свертки

Я пытаюсь найти "лучшую" реализацию "compose" с несколькими аргументами в Scheme (я знаю, что это встроено в некоторые реализации, но предположим, что на данный момент я использую тот, у которого этого нет) . Для функции компоновки с двумя аргументами у меня есть следующее: (define compose...

4
голосов
5ответов
173 просмотров

Сократить набор функций над значением?

Я ищу чистый, идиоматический способ выполнить "обратное сокращение" в Clojure. У меня есть (def fns '(fn1 fn2 fn3)) (def val 42) Я хочу получить (fn3 (fn2 (fn1 val))), и я не требователен к порядку.Поэтому я хотел бы последовательно применять последовательность функций к значению, а не ...

5
голосов
1ответов
637 просмотров

В F #.Можно ли перегрузить конструктор абстрактного типа?

Если да, не могли бы вы привести пример типа с конструктором без параметров и с "полным параметром". Вы бы порекомендовали это, или F # предлагает альтернативный, более функциональный способ.Если да, не могли бы вы привести пример?

1
голосов
2ответов
3537 просмотров

Как заполнить IEnumerable в выражении Lambda?

Я просто не могу заставить это работать, был бы признателен, если бы кто-нибудь мог помочь. Итак, я получаю результат XML из базы данных, который выглядит так: <matches> <issuer client_name="MTR" score="6" match_list="MTR CORPORATION LIMITED"/> <issuer client_name="PEOPL...

11
голосов
10ответов
2983 просмотров

Функциональные структуры данных в Java

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

7
голосов
3ответов
3313 просмотров

Функциональный обход дерева в C #

Рассмотрим следующий метод расширения в C #, Traverse: IEnumerable<T> Traverse<T>( this IEnumerable<T> source, Func<T, IEnumerable<T>> fnRecurse ); Этот метод позволяет выполнять рекурсию по дереву, как определено T, и любая фун...

29
голосов
5ответов
2881 просмотров

Перевернутый / перевернутый fmap ()?

Я нашел определение следующего (%) = flip fmap Я могу написать такой код: readFile "/etc/passwd" % lines % filter (not . null) Для меня это имеет больше смысла, чем альтернатива: filter (not . null) <$> lines <$> readFile "/etc/passwd" Очевидно, это всего лишь в...

2
голосов
6ответов
493 просмотров

Clojure: Разве возможность использовать объекты Java с состоянием не противоречит самой идее функциональности P?

Я думал, что вся идея заключалась в том, чтобы иметь только вычисления без состояния и НИКАКИХ побочных эффектов.Теперь, если приложение Clojure (или, что еще хуже, многоразовая библиотека ) может использовать и создавать любой объект Java, как я могу быть уверен, что не получу побочных эффекто...

7
голосов
10ответов
3666 просмотров

Сортировка выделения в функциональной Scala

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

6
голосов
7ответов
17620 просмотров

Найдите максимальное значение в Java с помощью предопределенного компаратора

У меня есть метод List<Foo> и метод compare (), который принимает два объекта Foo и возвращает «больший».Есть ли встроенный метод Java, который берет список и находит самый большой?

92
голосов
10ответов
32909 просмотров

Могу ли я объединить в Scala более двух списков?

Учитывая следующий список Scala: val l = List(List("a1", "b1", "c1"), List("a2", "b2", "c2"), List("a3", "b3", "c3")) Как я могу получить: List(("a1", "a2", "a3"), ("b1", "b2", "b3"), ("c1", "c2", "c3")) Поскольку zip можно использовать только для объединения двух списков, я думаю,...

4
голосов
2ответов
989 просмотров

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

в лямбда-исчислении (λ x. λ y. λ s. λ z. x s (y s z)) используется для сложения двух чисел Чёрча, как мы можем это объяснить, есть ли какой-нибудь хороший ресурс лямбда-исчисление для функционального программирования?Ваша помощь очень ценится

1
голосов
2ответов
327 просмотров

Проблемы с картами и их записями в Scala

У меня есть рекурсивная функция, которая принимает карту как единственный параметр. Затем он добавляет новые записи к этой карте и вызывает себя с этой большой картой. Пожалуйста, пока игнорируйте возвращаемые значения. Функция еще не завершена. Вот код: def breadthFirstHelper( found: Map[AIS...

17
голосов
4ответов
2158 просмотров

функциональное программирование: эффективность неизменяемой структуры данных

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

6
голосов
3ответов
6496 просмотров

Вложенные циклы и рекурсия Scheme / Lisp

Я пытаюсь решить проблему в схеме, которая требует от меня использования вложенного цикла или вложенной рекурсии. напримерУ меня есть два списка, в которых я должен проверить условие на их декартово произведение. Как лучше всего решать подобные проблемы?Есть какие-нибудь указатели на то, к...

1
голосов
1ответов
311 просмотров

Доступ к файлу функционального теста Rails

Мне нужно получить доступ к файлу в функциональном тесте Rails в test /function / main_controller_test.rb. Если я упоминаю файл в "", а включенный файл помещается в каталог test /, я могу запустить тест, используя: $ cd test $ рубиновый функционал / main_controller_test.rb Но я получаю с...

1
голосов
3ответов
349 просмотров

Это лучший (более функциональный способ) написать следующий код fsharp?

У меня есть такие фрагменты кода в проекте, и я понимаю, что это не так. написано функционально: let data = Array.zeroCreate(3 + (int)firmwareVersions.Count * 27) data.[0] <- 0x09uy //drcode data.[1..2] <- firmwareVersionBytes //Number of firmwar...

2
голосов
1ответов
205 просмотров

Как лучше всего инициализировать все элементы JTable с помощью Clojure?

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

3
голосов
3ответов
1701 просмотров

Изменяемые данные в OCaml

Я создал изменяемую структуру данных в OCaml, однако когда я перехожу к ней, выдает странную ошибку, Вот мой код type vector = {a:float;b:float};; type vec_store = {mutable seq:vector array;mutable size:int};; let max_seq_length = ref 200;; exception Out_of_bounds;; exception Vec_store_f...