Haskell위원회는 왜 I / O를 나타내는 모나드를 선택 했습니까? 형식을 순수하게 기능 설정에서

깨끗한 언어는 사용하는 독특한 형식을 순수하게 기능 설정에서 I에게 / O를 처리 할 수 있습니다. 하스켈위원회는 왜 모나드 와 함께 갔 습니까? 위원회가 조사했지만 반대 한 국가를 다루기위한 다른 제안이 있었습니까?

참고 : 저는 모나드와 다른 형태의 컴퓨팅 사이의 거룩한 전쟁을 찾고 있지 않습니다. I / O에 관한위원회의 선택에 대해서만 주제를 다루겠습니다.



답변

에 따르면 하스켈의 역사 : 게으른와 클래스 : 세 가지 모델이 처음으로 간주되었다 (7 항 참조) 스트림 , 연속성을 하고 “세계 통과” 이 청정 방식처럼 내가 청소에 대해 잘 모르는 (하지만 소리 ?).

7.2 절의 마지막 단락은 현재 고유 유형 개념이 개발되지 않았 음을 나타냅니다 .

그러나이“세계 통과”모델은 Haskell의 심각한 경쟁자가 아니 었습니다. 우리는 세계 상태에 대한“단일 스레드”액세스를 보장 할 수있는 쉬운 방법을 찾지 못했기 때문입니다. Clean 디자이너는 결국 “고유성 유형”을 사용하여이 문제를 해결했습니다.)

모나드의 개념은 하스켈의 이후 개정판에서 더 깔끔한 코드 (연속 / 스트림과 비교)를 가져 왔기 때문에 다른 작업에서 재사용 된 것으로 보입니다.

모나 딕 방식은 이전 모델을 빠르게 지배했습니다. 유형은 더 작고 유익합니다.


답변

내가 본 가장 좋은 설명은 Simon Peyton-Jones의 ” 어색한 분대 태클 “입니다.

논문에서 내가 기억하는 것에서 게으름에 관한 문제가 결정에 큰 역할을했습니다. (Haskell과 같은 방식으로 Clean이 기본적으로 게으른 지 확실하지 않습니다.)