IO 모나드는 C #과 같은 언어에서 의미가 있습니까?

지미 피버

많은 시간을 읽고 생각한 후에 마침내 모나드가 무엇인지, 어떻게 작동하는지, 무엇이 유용한 지 마침내 파악했다고 생각합니다. 저의 주요 목표는 모나드가 제가 일상적인 C # 작업에 적용 할 수 있는지 알아내는 것이 었습니다.

모나드에 대해 배우기 시작했을 때 나는 그들이 마 법적이라는 인상을 받았으며 어떻게 든 IO 및 기타 순수하지 않은 기능을 순수하게 만든다는 인상을 받았습니다.

.Net의 LINQ와 같은 것에 대한 모나드의 중요성을 이해하고 Maybe는 유효한 값을 반환하지 않는 함수를 처리하는 데 매우 유용합니다. 또한 코드에서 상태 저장을 제한하고 외부 종속성을 격리해야하는 필요성에 감사하며 모나드가 이러한 작업에도 도움이되기를 바랐습니다.

하지만 마침내 Haskell에는 다른 방법이 없기 때문에 IO 및 처리 상태에 대한 모나드가 필수라는 결론에 도달했습니다 (그렇지 않으면 시퀀싱을 보장 할 수없고 일부 호출이 최적화 될 수 있기 때문입니다). 그러나 더 많은 주류 언어의 경우 대부분의 언어가 이미 쉽게 처리하고 상태 및 IO를 처리하고 있기 때문에 모나드는 이러한 요구에 적합하지 않습니다.

제 질문은 IO 모나드가 실제로 Haskell에서만 유용하다고 말하는 것이 공정한가요? 예를 들어 C #에서 IO 모나드를 구현해야하는 좋은 이유가 있습니까?

GS-Monica에게 사과

저는 Haskell과 F #을 정기적으로 사용하며 F #에서 IO 또는 상태 모나드를 사용하는 느낌을받은 적이 없습니다.

저의 주된 이유는 Haskell에서 IO 나 상태를 사용 하지 않는 어떤 유형을 통해 알 수 있다는 것입니다. 이것은 정말 귀중한 정보입니다.

F # (및 C #)에서는 다른 사람의 코드에 대한 일반적인 기대치가 없으므로 자신의 코드에 해당 규칙을 추가해도 많은 이점을 얻지 못하며이를 고수하는 데 일반적인 오버 헤드 (주로 구문)를 지불하게됩니다.

모나드는 또한 더 높은 종류의 유형 이 없기 때문에 .NET 플랫폼에서 너무 잘 작동하지 않습니다 . 워크 플로 구문을 사용하여 F #에서 모나 딕 코드를 작성할 수 있고 조금 더 고통 스럽고 C #에서는 쉽게 작성할 수 없습니다. 여러 다른 모나드를 추상화하는 코드.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++에는 "구성하기 전에 소멸"의미 체계가있는 unique_ptr과 같은 스마트 포인터가 있습니까?

분류에서Dev

C # (또는 C ++)에서 iFrame, div 등과 같은 HTML 요소의 창 핸들을 가져올 수 있습니까?

분류에서Dev

Objective C / C ++에 대한 __APPLE__과 같은 정의가 있습니까?

분류에서Dev

OO- 언어 / 모델에 "제어 된 가시성"과 같은 개념이 있습니까?

분류에서Dev

Facebook이나 Google에있는 것과 같은 Twitter 디버거가 있습니까?

분류에서Dev

Flink DataStream에는 mapPartition과 같은 API가 있습니까?

분류에서Dev

Ubuntu에는 모니터 색상 보정 앱과 같은 MacOS가 있습니까?

분류에서Dev

Ubuntu에는 모니터 색상 보정 앱과 같은 MacOS가 있습니까?

분류에서Dev

wpf에서 동작과 같은 "태그"가있는 texbox가 있습니까?

분류에서Dev

+ = a가 C에서 0과 같은 이유는 무엇입니까?

분류에서Dev

C ++에서 암시 적 선언과 같은 것이 있습니까?

분류에서Dev

자식이 JavaScript에서 같은 이름의 메서드를 가지고있을 때 어떻게 부모의 메서드를 호출 할 수 있습니까? 여기에 Java의 유형 캐스팅과 같은 것이 있습니까?

분류에서Dev

아래 코드와 같이 C ++에서 임의의 결과를 어떻게 실행할 수 있습니까?

분류에서Dev

의류에는 null-12b08과 같은 모자가 있습니다.

분류에서Dev

Ubuntu에 Carnac과 같은 소프트웨어가 있습니까?

분류에서Dev

C #에서 배열 선언과 같은 메서드를 만드는 방법은 무엇입니까?

분류에서Dev

자바의 실험과 같은 클래스 / 메소드를 선언 할 수있는 방법이 있습니까?

분류에서Dev

나는 서명과 같은 것을 그려야하는 영역이 있습니다. 어떻게 appium 버전 1.15 자바에서 이것을 할 수 있습니까? 이미지 링크가 첨부되어 있습니다.

분류에서Dev

html에서 <Section>과 <div>를 같은 의미로 사용할 수 있습니까?

분류에서Dev

C #과의 비동기 성과 같은 Node.js를 어떻게 수행 할 수 있습니까?

분류에서Dev

CSS의 배경으로 이미지의 텍스트 상자 또는 버튼과 같은 것을 어떻게 가질 수 있습니까?

분류에서Dev

Objective C의 "POST"에 대한 Appdelegate 메소드에서 JSON 구문 분석과 같은 웹 서비스를 호출 할 수 있습니까?

분류에서Dev

명령과 그 결과가있는 터미널 로그 기록은 어디에서 찾을 수 있습니까?

분류에서Dev

헤더 파일과 같은 종류의 C #에서 일부 정의를 분리 할 수 있습니까?

분류에서Dev

C ++ 코드에서 coremotion과 같은 iOS 프레임 워크를 사용할 수 있습니까?

분류에서Dev

C # : 'éóú'및 öäü와 같은 문자를 하나의 파일에서 어떻게 읽을 수 있습니까?

분류에서Dev

$ (MKDIR) 및 $ (COPY_DIR)과 같은 변수는 어디에 정의되어 있습니까?

분류에서Dev

최대 절전 모드에서 Criterion과 같은 것이 있습니까?

분류에서Dev

C ++ / cx ref 클래스에서 속성과 같은 .net을 구현하는 방법이 있습니까?

Related 관련 기사

  1. 1

    C ++에는 "구성하기 전에 소멸"의미 체계가있는 unique_ptr과 같은 스마트 포인터가 있습니까?

  2. 2

    C # (또는 C ++)에서 iFrame, div 등과 같은 HTML 요소의 창 핸들을 가져올 수 있습니까?

  3. 3

    Objective C / C ++에 대한 __APPLE__과 같은 정의가 있습니까?

  4. 4

    OO- 언어 / 모델에 "제어 된 가시성"과 같은 개념이 있습니까?

  5. 5

    Facebook이나 Google에있는 것과 같은 Twitter 디버거가 있습니까?

  6. 6

    Flink DataStream에는 mapPartition과 같은 API가 있습니까?

  7. 7

    Ubuntu에는 모니터 색상 보정 앱과 같은 MacOS가 있습니까?

  8. 8

    Ubuntu에는 모니터 색상 보정 앱과 같은 MacOS가 있습니까?

  9. 9

    wpf에서 동작과 같은 "태그"가있는 texbox가 있습니까?

  10. 10

    + = a가 C에서 0과 같은 이유는 무엇입니까?

  11. 11

    C ++에서 암시 적 선언과 같은 것이 있습니까?

  12. 12

    자식이 JavaScript에서 같은 이름의 메서드를 가지고있을 때 어떻게 부모의 메서드를 호출 할 수 있습니까? 여기에 Java의 유형 캐스팅과 같은 것이 있습니까?

  13. 13

    아래 코드와 같이 C ++에서 임의의 결과를 어떻게 실행할 수 있습니까?

  14. 14

    의류에는 null-12b08과 같은 모자가 있습니다.

  15. 15

    Ubuntu에 Carnac과 같은 소프트웨어가 있습니까?

  16. 16

    C #에서 배열 선언과 같은 메서드를 만드는 방법은 무엇입니까?

  17. 17

    자바의 실험과 같은 클래스 / 메소드를 선언 할 수있는 방법이 있습니까?

  18. 18

    나는 서명과 같은 것을 그려야하는 영역이 있습니다. 어떻게 appium 버전 1.15 자바에서 이것을 할 수 있습니까? 이미지 링크가 첨부되어 있습니다.

  19. 19

    html에서 <Section>과 <div>를 같은 의미로 사용할 수 있습니까?

  20. 20

    C #과의 비동기 성과 같은 Node.js를 어떻게 수행 할 수 있습니까?

  21. 21

    CSS의 배경으로 이미지의 텍스트 상자 또는 버튼과 같은 것을 어떻게 가질 수 있습니까?

  22. 22

    Objective C의 "POST"에 대한 Appdelegate 메소드에서 JSON 구문 분석과 같은 웹 서비스를 호출 할 수 있습니까?

  23. 23

    명령과 그 결과가있는 터미널 로그 기록은 어디에서 찾을 수 있습니까?

  24. 24

    헤더 파일과 같은 종류의 C #에서 일부 정의를 분리 할 수 있습니까?

  25. 25

    C ++ 코드에서 coremotion과 같은 iOS 프레임 워크를 사용할 수 있습니까?

  26. 26

    C # : 'éóú'및 öäü와 같은 문자를 하나의 파일에서 어떻게 읽을 수 있습니까?

  27. 27

    $ (MKDIR) 및 $ (COPY_DIR)과 같은 변수는 어디에 정의되어 있습니까?

  28. 28

    최대 절전 모드에서 Criterion과 같은 것이 있습니까?

  29. 29

    C ++ / cx ref 클래스에서 속성과 같은 .net을 구현하는 방법이 있습니까?

뜨겁다태그

보관