나는 최근에 재미를 위해 F #을 배우고 있으며 (나는 VB.NET/C# dev), 나는 그것이 제공해야 할 것들을 정말로 좋아합니다. 이론적으로는. 그러나 C #이 아닌 F #으로 코딩하기로 선택한 시나리오를 생각하는 데 어려움을 겪고 있습니다. 어떤 아이디어?
나는 최근에 재미를 위해 F #을 배우고 있으며 (나는 VB.NET/C# dev), 나는 그것이 제공해야 할 것들을 정말로 좋아합니다. 이론적으로는. 그러나 C #이 아닌 F #으로 코딩하기로 선택한 시나리오를 생각하는 데 어려움을 겪고 있습니다. 어떤 아이디어?
답변:
순수한 함수형 프로그래밍에 대한 몇 가지 주장 :
완전한 처리 방법은 함수형 프로그래밍이 중요한 이유 및 함수형 프로그래밍이 중요한 이유를 참조하십시오 .
C #이 아닌 F #으로 코딩하기로 선택한 시나리오를 생각하는 데 어려움을 겪고 있습니다. 어떤 아이디어?
에서 여기 :
비동기 서버
메타 프로그래밍 (예 : 파싱)
기술 컴퓨팅
GUI 어플리케이션
논리 프로그래밍
테스팅
공연
inline
무료 고차 추상화 용.다음은 거의 매일 기능적 프로그래밍을 사용하는 것입니다.
우리는 상당히 큰 데이터 세트로 많은 통계 및 계리 작업을 수행합니다. 데이터베이스에서 가져온 데이터는 본질적으로 정적이며 변경 불가능한 객체입니다. 메서드를 사용하여 클래스를 만들 이유가 없습니다.
계산의 각 단계는 몇 가지 추가 세부 정보를 추가하지만 본질적으로 객체를 변경하지는 않습니다. 파이프 라인의 "끝"에서 우리는 합과 수를 계산하기 위해 실제로 축소 작업을 수행하고 있습니다.
이것을 상상해보십시오.
for data in summarize( enrich( calculate( some_query( criteria() ) ) ) ):
print data
계산의 각 "단계"는 간단한 읽기 계산 수율을 수행하고 다른 사물과 결과의 복합 객체를 생성하는 기능적 프로그래밍 루프입니다.
(우리는 Python을 사용하므로 생성기 함수를 사용하는 함수형 프로그래밍입니다.)
상태 비 저장 불변 개체를 사용하는 것이 더 쉽습니다.
criteria() |> some_query |> calculate |> enrich |> summarize
순방향 파이프 연산자가 더 명확한 코드로 이어질 수 있지만 나는 멀어집니다.
map
같은 효과를 내기 위해 작성 합니다.
확실한 장점 중 하나는 훨씬 더 쉽게 병렬화된다는 것입니다.
F#
함수형 프로그래밍을 완전히 대표하지는 않습니다.Clojure
대신 시도하십시오 .