많은 시간을 읽고 생각한 후에 마침내 모나드가 무엇인지, 어떻게 작동하는지, 무엇이 유용한 지 마침내 파악했다고 생각합니다. 저의 주요 목표는 모나드가 제가 일상적인 C # 작업에 적용 할 수 있는지 알아내는 것이 었습니다.
모나드에 대해 배우기 시작했을 때 나는 그들이 마 법적이라는 인상을 받았으며 어떻게 든 IO 및 기타 순수하지 않은 기능을 순수하게 만든다는 인상을 받았습니다.
.Net의 LINQ와 같은 것에 대한 모나드의 중요성을 이해하고 Maybe는 유효한 값을 반환하지 않는 함수를 처리하는 데 매우 유용합니다. 또한 코드에서 상태 저장을 제한하고 외부 종속성을 격리해야하는 필요성에 감사하며 모나드가 이러한 작업에도 도움이되기를 바랐습니다.
하지만 마침내 Haskell에는 다른 방법이 없기 때문에 IO 및 처리 상태에 대한 모나드가 필수라는 결론에 도달했습니다 (그렇지 않으면 시퀀싱을 보장 할 수없고 일부 호출이 최적화 될 수 있기 때문입니다). 그러나 더 많은 주류 언어의 경우 대부분의 언어가 이미 쉽게 처리하고 상태 및 IO를 처리하고 있기 때문에 모나드는 이러한 요구에 적합하지 않습니다.
제 질문은 IO 모나드가 실제로 Haskell에서만 유용하다고 말하는 것이 공정한가요? 예를 들어 C #에서 IO 모나드를 구현해야하는 좋은 이유가 있습니까?
저는 Haskell과 F #을 정기적으로 사용하며 F #에서 IO 또는 상태 모나드를 사용하는 느낌을받은 적이 없습니다.
저의 주된 이유는 Haskell에서 IO 나 상태를 사용 하지 않는 어떤 유형을 통해 알 수 있다는 것입니다. 이것은 정말 귀중한 정보입니다.
F # (및 C #)에서는 다른 사람의 코드에 대한 일반적인 기대치가 없으므로 자신의 코드에 해당 규칙을 추가해도 많은 이점을 얻지 못하며이를 고수하는 데 일반적인 오버 헤드 (주로 구문)를 지불하게됩니다.
모나드는 또한 더 높은 종류의 유형 이 없기 때문에 .NET 플랫폼에서 너무 잘 작동하지 않습니다 . 워크 플로 구문을 사용하여 F #에서 모나 딕 코드를 작성할 수 있고 조금 더 고통 스럽고 C #에서는 쉽게 작성할 수 없습니다. 여러 다른 모나드를 추상화하는 코드.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다