유니티(Unity) C#용 함수형 프로그래밍 라이브러리를 만들었습니다.

Unity NOPE

개발기를 담은 블로그 포스트

유명한 C# 함수형 라이브러리인 CSharpFunctionalExtensions 를 많이 참고해서 만들어서 사용법이 거의 비슷합니다.

특징

  • GC pressure를 줄이기 위해서 Zero-Memory Allocation으로 구현했습니다.
  • Unity에서 de-facto 인더스트리 스탠다드인 UniTask를 완전히 지원합니다.
  • Unity6부터 도입된 Awaitable을 완벽 지원합니다.

벤치마크 자료

간단한 사용 예시

 public async UniTask<string> ComplexOperation()
 {
     return await Result.SuccessIf(CheckA(), 0, "CheckA failed!")
         .Bind(_ => FetchDataAsync()) // => UniTask<Result<string>>
         .Ensure(str => !string.IsNullOrEmpty(str), "Empty data!")
         .Map(str => str.Length)
         .Bind(FinalStepAsync)
         .Match(
             onSuccess: val => $"Final OK: {val}",
             onFailure: err => $"Failure: {err}"
         );
 }
10 Likes

또다른 모나드 튜토리얼은 언제나 환영입니다~ :rofl:

1 Like