IT Share you

자바의 함수형 프로그래밍

shareyou 2020. 12. 6. 22:21
반응형

자바의 함수형 프로그래밍


Java에서 함수형 프로그래밍을위한 좋은 라이브러리가 있습니까?

PredicateList.Find () (정적 메서드) 같은 것을 찾고 있습니다. 구현하기가 복잡하지는 않지만 여기서 재사용 가능한 라이브러리를 찾는 것이 좋을 것입니다.


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}  

편집하다

lambdaj 도 확인하십시오 .

추가 편집

BGGA는 전적으로 선택 사항입니다. 그것은 단지 더 좋은 구문을 만듭니다.


Scala 는 Java와 완전히 호환되는 기능적 프로그래밍 언어입니다 (JVM을 통해 실행 됨). 제네릭 및 동시성에서 Java보다 많은 개선 사항과 함께 객체 지향 및 기능 기술의 아름다운 조합을 제공합니다. 일부는 Java를 대체 할 수 있다고도합니다.


자바 라이브러리

이미 당신을 위해 다리 작업을하고 난해한 것들을 숨겨서 이것을 도와 줄 수있는 라이브러리가 있습니다 :

성숙 / 기존 도서관

더 모호한 / 실험적 라이브러리

이를 통해 FP 유능한 언어에서 기대할 수있는보다 기능적인 접근 방식과 더 친숙한 구문 및 의미론으로 Java 코드를 작성할 수 있습니다. 이유 내에서 그렇습니다.

JVM 언어

그리고 분명히 Java 위에 기능적 언어를 구현할 수 있습니다 . 그러면이를 FP 언어로 사용할 수 있습니다. 그것은 당신이 요청한 것보다 약간 더 높은 수준의 추상화이지만 상대적으로 맥락 내에서 (나는 여기에서 약간의 속임수를 쓰고 있지만).

예를 들어 다음을 확인하십시오.

상당히 성숙한 언어

덜 성숙하거나 모호한 언어

추가 읽기

다음 기사 또는 비디오를 읽거나 볼 수도 있습니다.


" Java에서 함수형 프로그래밍이 가능합니까? " 대한 P.SE 답변 에서 가져 왔습니다.


Google 컬렉션 에는 기능 프로그래밍 스타일 유틸리티 방법이 적절하게 선택되어 있습니다. 관심있는 일부 클래스는 Iterables, Iterators, Function, Functions 등입니다.

또한 컬렉션 클래스도 많이 있습니다!


Functional Java 는 살펴볼 가치가있는 것이고 FunctionalJ 는 또 다른 것입니다.


순수한 Java 솔루션을 원한다면 lambdaj를 확인하십시오.

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

DSL 스타일에서 클로저를 정의하고 사용할 수있을뿐만 아니라 명시 적으로 클로저 나 루프를 작성하지 않고도 기능적인 방식으로 컬렉션을 조작 할 수 있습니다.


Jambda 는 또 다른 FP 라이브러리입니다. 로부터 문서 :

Jambda는 기능 프로그래밍 (FP)의 도구와 개념을 Java (TM) 세계에 제공하려는 시도입니다.

목표는 다음과 같습니다.

  • Java 프로그래머에게 표현적인 FP 구성을 제공하려면
  • Java 프로그래머를 FP 세계로 연결하기 위해
  • Java 및 제네릭이 얼마나 확장 될 수 있는지 확인하려면

이 문서는 Java 프로그래머를 FP 세계에 소개하는 동시에 Jambda의 일부 (또는 대부분) 기능을 설명하려는 시도입니다.


Apache Commons에는 기능적 코드가 있습니다. 예를 들어 Predicate 인터페이스를 참조하십시오 .


Google Guava 에는 다음과 같은 기능이 있습니다.

  • 수집 작업
  • 동시성 구성 (미래)

Or download OpenJDK 8 to try out Lambda expressions the way they will become in Java 8. Among others, the collection APIs are adjusted to support a functional style. See http://macgyverdev.blogspot.se/2012/10/functional-programming-in-java.html for examples of new collection APIs and comparisons with Guava, LambdaJ and FunctionalJava.


Scala was mentioned here, but there's a lot lighter and more Java compatible language: Xtend. It compiles to plain Java and uses the same type system. It has great Eclipse support. You can mix .java and .xtend files in a single project.

Sample code:

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

Although Functional Java is the most popular but i'll suggest you to try Google guava lib.

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

참고URL : https://stackoverflow.com/questions/1267297/functional-programming-in-java

반응형