Функциональное программирование на Java [закрыто]



есть ли хорошая библиотека для функционального программирования в Java?



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

690   12  

12 ответов:

FunctionalJava является самой известной библиотекой; он использует закрытие Java (BGGA) для примера:

final Array<Integer> a = array(1, 2, 3);  
final Array<Integer> b = a.map({int i => i + 42});  
arrayShow(intShow).println(b); // {43,44,45}  

EDIT

проверить тоже lambdaj.

далее редактировать

BGGA является полностью необязательным. Это просто делает для лучшего синтаксиса.

scala это функциональный язык программирования, который полностью совместим с java (работает через jvm). Он предлагает прекрасное сочетание объектно-ориентированных и функциональных методов наряду со многими улучшениями по сравнению с java в универсальных и параллелизме. некоторые даже говорят, что он может заменить java.

Библиотеки Java

есть библиотеки, которые могут помочь вам сделать это, уже делает работу за вас и скрывая тайные вещи:

Зрелые / Установленные Библиотеки

Более Неясный / Экспериментальный Библиотеки

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

языки JVM

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

например, проверить:

Вполне Зрелые Языков

Менее Зрелые или более непонятные языки

Более Дальнеишее Чтение

вы также можете прочитать или посмотреть эти статьи или видео:


взято из моего P.SE ответьте "возможно ли функциональное программирование на Java?"

коллекции Google имеет достойный выбор методов утилиты функционального программирования. Некоторые классы интереса-это итераторы, итераторы, функции, функции и т. д.

Он также имеет кучу классов коллекции, а также!

Функциональная Java это тот, который стоит посмотреть и FunctionalJ это другое.

Если вы хотите чистое решение Java проверить lambdaj

http://code.google.com/p/lambdaj/

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

Jambda это еще одна FP-библиотека. Из документация:

Jambda-это попытка обеспечить Мир Java (TM) с инструментами и концепциями из функционального программирования (ФП).

целей несколько:

  • чтобы предоставить Java-программистам выразительные конструкции FP
  • чтобы обеспечить мост для Java-программистов в FP-мир
  • чтобы увидеть, как далеко Java и дженерики можно растягивать

этот документ является попыткой ввести Java-программисты в мир FP, и в то же время объяснить некоторые (или большинство) из особенностей в Джамбде.

Apache Commons имеет некоторый функциональный код в нем. См., например, интерфейс.

Google Guava обладает функциональной:

  • операции сбора
  • параллелизм конструкций (фьючерсы)

или загрузите OpenJDK 8, чтобы опробовать лямбда-выражения так, как они станут в Java 8. Среди прочего, API коллекции настраиваются для поддержки функционального стиля. Видеть http://macgyverdev.blogspot.se/2012/10/functional-programming-in-java.html для примеров новых API коллекции и сравнений с Guava, LambdaJ и FunctionalJava.

Scala был упомянут здесь, но есть намного более легкий и совместимый с Java язык: Xtend. Он компилируется на простой Java и использует систему того же типа. Он имеет большую поддержку затмения. Вы можете смешать .java и .xtend файлы в одном проекте.

пример кода:

def static void main(String[] args) {
    val s = #[1,2,3].map[it+43].join(", ")
    println(s);
}

хотя функциональная Java является самым популярным, но я предлагаю вам попробовать Google guava lib.

http://code.google.com/p/guava-libraries/

Comments

    Ничего не найдено.