이 답변 에서 Andrej Bauer의 진술과 같은 생각을 따라
Haskell 커뮤니티는 카테고리 이론에서 영감을 얻은 여러 기술을 개발했으며, 그 중 모나드 는 가장 잘 알려져 있지만 모나드 와 혼동해서는 안됩니다 .
사이의 관계를 무엇입니까 펑 SML과 펑 분류 이론은?
Haskell 또는 OCaml과 같은 다른 언어의 펑터에 대한 세부 정보를 모르기 때문에 가치 정보가 있으면 다른 언어 섹션도 추가하십시오.
이 답변 에서 Andrej Bauer의 진술과 같은 생각을 따라
Haskell 커뮤니티는 카테고리 이론에서 영감을 얻은 여러 기술을 개발했으며, 그 중 모나드 는 가장 잘 알려져 있지만 모나드 와 혼동해서는 안됩니다 .
사이의 관계를 무엇입니까 펑 SML과 펑 분류 이론은?
Haskell 또는 OCaml과 같은 다른 언어의 펑터에 대한 세부 정보를 모르기 때문에 가치 정보가 있으면 다른 언어 섹션도 추가하십시오.
답변:
카테고리는 객체가 (작은) 카테고리이고 형태가 작은 카테고리 간의 펑터 인 (큰) 카테고리를 형성합니다. 이런 의미에서 범주 이론의 펑 터는 "더 큰 크기의 형태"입니다.
ML functors는 단어의 범주적인 의미에서 functors가 아닙니다. 그러나 그것들은 형식 이론적 의미에서 "더 큰 크기의 함수"입니다.
일반적인 프로그래밍 언어의 구체적인 데이터 유형을 "작은"것으로 생각하십시오. 따라서 int
, bool
, int -> int
, 등 C. 잘 구조체 우리는라는 대규모 컬렉션에 모든 데이터 유형을 수집 할 수 있습니다으로 자바의 클래스는, 작은, 작은 Type
. 같은 유형의 생성자 list
또는 array
발 함수 Type
로 Type
. 따라서 "큰"기능입니다. ML functor는 약간 더 복잡한 큰 함수입니다. 인수로 몇 가지 작은 것을 받아들이고 몇 가지 작은 것을 반환합니다. "몇몇 작은 것들이 합쳐진다"는 ML의 구조 로 알려져 있습니다. Martin-Löf 유형 이론의 관점에서 우리는 작은 유형 의 우주 Type
를 가지고 있습니다. 큰 유형은 일반적으로 kind 라고 합니다. 그래서 우리는 :
42 : int
)Type
(예 : int : Type
)OrderedType
)list : Type -> Type
)String : OrderedType
)Map.Make : Map.OrderedType -> Make.S
)이제 ML과 카테고리 사이에 유추가 펑터에 해당하는 유추를 그릴 수 있습니다. 그러나 ML의 데이터 유형은 "모르 프리스가없는 작은 범주"와 비슷합니다. 즉, 범주보다 세트가 더 많습니다. ML과 이론 사이의 비유를 사용할 수 있습니다.
표준 ML 구조는 대수 와 유사합니다 . 그것의 특징 은 비슷한 모양 의 대수 의 전체 클래스를 설명합니다 .
이러한 아이디어의 대부분은 Burstall과 Goguen이 CLEAR ( DBLP 페이지 의 c5 및 c6 참조)라는 사양 언어를 디자인하는 일련의 논문에서 작성되었습니다 . David MacQueen은 당시 Burstall 및 Sannella와 공동으로 작업했으며 친숙했습니다 문제와 함께. 표준 ML 모듈 시스템은 이러한 아이디어를 기반으로합니다.
대부분의 사람들이 궁금하게 생각하는 것은 무엇입니까? 범주 이론적 펑터에는 객체 부분과 형태 부분이 있습니다. 표준 ML 기능이 동일합니까? 대답은 예와 아니오입니다.
이것은 표준 ML이 범주 이론에서 벗어 났음을 의미합니까? 나는 그렇게 생각하지 않습니다. 오히려 표준 ML이 올바른 일을하고 있다고 생각하고 카테고리 이론은 아직 따라 잡지 않았습니다. 카테고리 이론은 아직 고차 함수를 다루는 방법을 모른다. 언젠가는 그럴 것이다.
제가 아는 한,이 사이 형식적인 관계 펑 카테고리 이론과 펑 ML에서 (SML 또는 OCaml의, 그들은 여기에 우리의 목적을 위해 충분히 가까이있어 없음).
범주 이론에서 펑 터는 객체에서 작동하는 함수입니다. 그것들은 종종 요소에서 작동하는 기능인 형태의 한 수준 위에 있습니다 (대부분의 범주에는 대수 구조가 설정된 객체와 이러한 구조 사이의 동형 화살표가 있습니다). ML functor는 핵심 언어 값에서 작동하는 기능보다 한 수준 위의 모듈에서 작동하는 기능입니다. 나는 그 유사점이 여기에서 멈춘다 고 생각합니다.
ML 펑 터는 1985 년 다형성 뉴스 레터 에 실린 표준 ML (citeseerx) 용 모듈 개정판에서 Dave McQueen이 침례를 받았습니다 (원본은“파라 메트릭 모듈”이라는 표현을 사용했습니다. 나중에 출판물은 형용사“파라미터 화 된”을 사용하는 경향이 있습니다). 불행히도, 나는 그 종이의 사본을 찾을 수 없습니다. 그의 1986 년 논문에서 모듈 형 구조를 표현하기 위해 의존형 사용하기 (citeseerx)에서 그는 설립 된 이름을 알려줍니다.