참조 요청 : 유형 시스템에 적용되는 카테고리 이론


13

프로그래밍 언어 이론을 진정으로 이해하기 위해 범주 이론을 배워야하는 방법에 대해 계속 듣고 있습니다. 지금까지 나는 범주 영역으로 들어 가지 않고 많은 PL을 배웠습니다. 그러나, 내가 잃어버린 것을보기 위해 도약 할 시간이라고 생각했습니다.

불행히도, 내가 찾을 수있는 소스 중 어느 것도 유형 시스템이나 프로그래밍에 연결되지 않는 것 같습니다. 그들은 은 컴퓨터 과학자에 대한 카테고리 이론에 대한 소개입니다,하지만 일반적으로 추상적 인 넌센스 속으로 바꾸다 어떤 실제적인 예 또는 응용 프로그램을 포기하지 않고 (나는 사랑이 말).

내 질문은 실제로 두 가지로 추측됩니다.

  1. PL의 "심층 개념"을 이해하기 위해 범주 이론이 필수적입니까?
  2. 실제 응용 프로그램의 관점에서 유형 시스템 및 프로그래밍에 이르기까지 범주 이론을 설명하는 소스는 무엇입니까?

지금까지 내가 얻은 것 중 가장 먼 것은 functors의 모호한 개념입니다 (내가 말할 수있는 한 ML의 functors와 관련이없는 것 같습니다). 나는 범주 이론적 관점에서 모나드를 이해하기 위해 머릿속에 유지해야 할 추상화를 두려워하고 있습니다.


2
@Raphael 서로 모호하게 관련된 두 가지 다른 질문으로 구성된 질문을하는 것은 좋지 않습니다. 그러나 질문 1은 주관적이지 않습니다. 오히려 설명과 설명을 요청하는 것입니다. 나는 질문 2가 실제 설명 대신 설명되는 곳을 참조하여 행복하다는 의미에서 추측되었다.
Thomas Klimpel

2
앞으로 게시물 당 하나의 질문 만하는 것이 좋습니다. 질문 1을 물어 본 다음,받는 답변에 따라 질문 2를 별도로 요청할지 여부를 결정하십시오. 종종 일이 더 순조롭게 진행됩니다.
DW

1
@Raphael 질문 1은 어떻게 주관적입니까? 판단하기 어려울 수 있습니다. 그게 무슨 뜻입니까? 그리고 그것은 "당신이 어떤 종류의 사람인지에 달려 있습니다." - 이게 네가 말하는거야? 그것은 여전히 것으로 판명 수 확실히 필수 또는 확실히 오른쪽 필수적이지? (그리고 사람들은 그것이 필수적이지 않다는 데 동의하는 것 같습니다.)
k.stm

1
@ k.stm 질문의 일반적인 형태는 저를 걱정합니다. 누군가가 "공식 언어의 깊은 개념을 이해하는 데 필수적입니까?"라고 물으면 다른 사람들이 자신의 취향과 취향에 따라 다른 대답을 할 것이라는 사실을 알고 있습니다. 나는 그것이 여기서 다를 것으로 기대하지 않습니다.
Raphael

1
@Raphael 좋아, 알겠다 그러나 나는 그것이 객관적인 질문에 주관적인 답변을주는 사람들이라고 생각합니다. ( "오, 내가 다섯 컵 하루 음주 나는 기분"커피가 건강에인지 여부를 물었을 때 말하는 사람 같은 느낌.)
k.stm

답변:


15

범주 이론은 아닙니다 프로그래밍 언어를 이해하는 데 필요 프로그래밍 언어에 대한 고급 연구를 수행 할 필요도 없습니다. 대부분의 프로그래밍 언어 사람들은 (많은) 범주 이론을 모른다.

범주 이론적 방법은 프로그래밍 언어 연구의 작은 부분, 특히 기능적 프로그래밍의 분석에 특히 유용했습니다. 특히 Moggi는 일부 계산 효과가 모나 딕 구조를 가지고 있다는 것을 발견했기 때문입니다. 1990 년대에 Moggi의 획기적인 발전에 따라 범주 형 방법을 다른 형태의 프로그래밍 언어로 확장하기 위해 많은 연구가 수행되었습니다. 그러나 내가 아는 한 범주 형 방법은 OO, 동시, 병렬 및 분산 계산, 시간 계산 또는 컴파일러에 유용한 모든 것을 찾지 못했습니다. 이러한 이유로 사람들은 주로 범주화 방법 확장을 포기했습니다.

유형이 지정된 프로그래밍에 대한 범주 적 접근 방식은 순수한 기능에서 잘 작동합니다. 실제로 몇 가지 간단한 타이핑 시스템이 범주입니다. 이것은 예를 들어 설명되어 있습니다

동시 프로세스에 대한 유형 (예 : 세션 유형)에 대한 많은 작업이 있으며 2016 년 9 월 현재 그 유형 중 어느 것도 범주 형이 아닙니다.

즉, 너무 많은 수학을 알 수 없으며 범주 이론을 아는 것이 유용합니다. 비용 / 이익의 문제입니다. 수학을 좋아한다면 대수학에 약간의 배경 지식이있는 경우 (예 : 세트, 무료 링 등의 자유 그룹이 무엇입니까) 학습 범주 이론은 쉬울 것입니다. 기능 프로그래밍, 범주를 아는 것이 유용 할 것입니다.

마지막으로, 범주 이론은 아름다운 수학이며, 깔끔하기 때문에 단순히 공부할 가치가 있습니다.


다른 견해에 대해서는 이 토론 에서 Uday Reddy의 기여를 참조하십시오 .


"그러나, 내가 아는 한, 범주 형 방법은 그다지 유용하지 않다 ..."바로 내 문제이다. 운영 의미론은 이러한 모든 개념을 정확하게 설명 할 수 있으므로 빠진 것 같은 느낌이 들지 않았습니다. 나는 수학을 좋아하지만 추상 대수학의 배경은 슬프게도 부족합니다. 나는 일반적인 대수 구조의 기본 사항만을 이해합니다. 이것은 범주 이론을 파악하는 데 특히 번거 롭습니다.
gardenhead

2
@gardenhead 그렇다면 CT가 그다지 유용한 것은 아닙니다. 유형에 대한 작업을 포함하여 "기능 프로그래밍"영역에서 많은 논문을 읽으려면 CT 언어를 사용합니다.
Martin Berger

이 하나 중복?
Raphael

2
또한 cs.unibo.it/~asperti/PAPERS/book.pdf "카테고리, 유형 및 구조"라는 책을 제안합니다 . 저자의 홈페이지이므로 합법적 인 것 같습니다.
John Forkosh

6

학습 범주 이론은 막대한 시간 투자이며 가치가 있는지 여부에 대한 질문은 매우 유효합니다. 나는 여전히 이것으로 어려움을 겪고 있으며 , 왜 내가 그것을 배워야 하는지를 이미 알고 있습니다. 나는 썼다 :

프로그래밍을 시작할 때 어셈블리 언어가 마음에 들었고 이론을 어셈블리 언어와 비슷하게 설정했습니다. 범주 이론은 주류 ZFC 집합 이론에 포함 된 논리 및 모델 이론에 대한 모든 편견을 해결할 수있는 대안 중 하나입니다.

여기서 아이디어는 주어진 유형 이론 또는 프로그래밍 언어에 대한 가능한 의미론으로 세트 또는 "지정되지 않은 비트"대신 카테고리를 사용하는 것입니다. 왜 이것을하고 싶습니까? 행동과 관찰 사이의 이중성을 고려하십시오. 다른 관측치 (또는 적어도 시간 순서)가 서로를 방해하지는 않지만 (양자 역학 외부) 서로 다른 행동에 반드시 해당되는 것은 아닙니다. 집합 이론에 포함 된 논리에 대한 편견은 모델링 관찰과 비교하여 동작을 모델링하기 어렵게 만듭니다.


나는 여기에 주장 된 것과 같은 범주 이론과 형식 이론 사이에 완벽하게 대응한다는 것을 확신하지 못합니다 .

구문-의미 론적 이중성에 의해 유형 이론을 범주 이론에 대한 공식적인 구문 언어 또는 미적분학으로 볼 수 있으며, 반대로 범주 이론을 유형 이론에 대한 의미론을 제공하는 것으로 생각할 수있다.

범주 이론이 유형 이론에 대한 의미론을 제공 할 수 있다는 것은 사실이지만 (실제로 유용 할 수 있음) 유형 이론이 범주 이론에서 수행 된 모든 계산을 표현할 수있는 충분히 강력한 형식적 구문 언어를 제공한다고 의심합니다.


실제로, 범주 이론의 유용성은 유용한 질문과 유추를 제안함으로써 발생할 수 있습니다. 그러나 범주 이론은 또한 활동과 질문을 제안 할 수 있으며, 결국 실제로 중요한 문제에서 혼란을 야기하는 것으로 드러납니다. 범주 이론에 신경 쓰지 않고 논리와 유형 이론을 확실히 배울 수 있습니다.


당신의 생각에 감사드립니다. 범주 이론을 배우는 당신의 이유는 나와 다릅니다. 당신은 관심이 순수한 수학적 관점에서 비롯된 반면, 유형에 대한 나의 이해를 넓히고 싶습니다. 그럼에도 불구하고, 그것의 좋은 자신이 접근하고 적용하기 어려운 범주를 찾을 다른 사람들 besdies을 알고
gardenhead
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.