본문 바로가기

프로그래밍 언어 노트/F#

[F#/Monad] Fsharp Plus 라이브러리

github.com/fsprojects/FSharpPlus

 

fsprojects/FSharpPlus

Extensions for F#. Contribute to fsprojects/FSharpPlus development by creating an account on GitHub.

github.com

fsprojects.github.io/FSharpPlus//computation-expressions.html

 

Computations Expressions

This library allows to use some common computation expressions without writing any boiler plate code. There is a single computation expression: monad but it comes in 4 flavours: Delayed or strict Delayed computations require that the type implements a Dela

fsprojects.github.io

어느 함수형 언어와 마찬가지로 F# 에서도 모오오오나드를 위한 문법이 있는데 (Clojure는 기본으로 없는건 비밀)

암튼 F# 에서는 Computations Expressions 이라고 표현한다.

 

그런데 이게좀 애매...한게

하스켈의 do-notation / 스칼라의 for - notation 과 다르게

Builder 로 Expressions 을 뚝딱 뚝딱 만들어줘야 한다.

예를 들어서 Async 모나드의 Computations Expressions 은 async { let! 블라블라 }

Seq 모나드용은 seq { 블라블라 } 가 있고 없으면 Builder 로 직접 만들어야되며,

하스켈/스칼라처럼 범용 모나드 notation 이 없다 (High Kind Type 이 없어서 그런가 싶음)

근데 Optional 모나드는 기본 Computations Expressions이 없음 ㅡㅡ..

 

서론이 좀 길었는데,

Fsharp Plus 라이브러리의 경우 이러한 범용 monad Computations Expressions을 제공해준다

무려 이름도 monad 다.

 

물론 monad 하나만을 위한 라이브러리를 아니므로

Lens나 다양한 함수도 제공해준다.

 

 

728x90