저자마다 프로그래밍 언어 의미를 나타내는 데 다른 표기법을 사용한다는 것을 알고 있습니다. 사실 Guy Steele은 흥미로운 비디오에서이 문제를 해결했습니다 .
최고의 개찰구 운영자가 잘 알려진 의미를 가지고 있는지 아는 사람이 있는지 알고 싶습니다. 예를 들어 다음 분모 시작 부분에서 선행 연산자를 이해하지 못합니다 .
누군가 나를 이해하도록 도울 수 있습니까? 감사.
type-checking
저자마다 프로그래밍 언어 의미를 나타내는 데 다른 표기법을 사용한다는 것을 알고 있습니다. 사실 Guy Steele은 흥미로운 비디오에서이 문제를 해결했습니다 .
최고의 개찰구 운영자가 잘 알려진 의미를 가지고 있는지 아는 사람이 있는지 알고 싶습니다. 예를 들어 다음 분모 시작 부분에서 선행 연산자를 이해하지 못합니다 .
누군가 나를 이해하도록 도울 수 있습니까? 감사.
type-checking
답변:
개찰구의 왼쪽에서 변수의 유형에 대한 가정의 유한 목록 인 로컬 컨텍스트를 찾을 수 있습니다.
위의 은 0 일 수 있으므로 resulting e : T가 됩니다. 이것은 변수에 대한 가정이 없다는 것을 의미합니다. 일반적으로 이는 e 가 T 형을 갖는 닫힌 용어 (임의의 변수없이) 임을 의미합니다 .
종종 언급 한 규칙은보다 일반적인 형태로 작성되며, 질문에 언급 된 것보다 더 많은 가설이있을 수 있습니다.
여기서, 임의의 문맥을 나타내고, Γ , X : T 1 추가 가설에 부가함으로써 얻어 확장자 나타내는 X를 : T (1) 리스트에 Γ를 . 확장이 이전 가정과 "충돌"하지 않도록 x 가 Γ에 나타나지 않도록 요구하는 것이 일반적 입니다.
다른 답변을 보완하기 위해 타이핑 파생에는 세 가지 수준의 "시사점"이 있습니다. 그리고 실제로 두 사람 사이에 대응 관계 (Curry-Howard의 대응이라고 함)가 있기 때문에 논리적 인 파생도 마찬가지입니다.
첫 번째 의미는 수식에 나타나는 화살표이며 수식의 논리적 의미 (또는 미적분 의 함수 유형)에 해당합니다 .
두 번째 의미는 십자형 회전식 문 기호로 구체화되며 "왼쪽에있는 모든 수식, 오른쪽에있는 수식이 있다고 가정"을 의미합니다. 특히, 당신이주는 규칙이 하나가 암시 증명하는 방법을 알려줍니다 증명하기 위해 ⇒ B를 , 다음 하나는 증명해야 B를 한다는 가정하에 A가 보유하고 있습니다. λ- 미적분의 관점에서 λ x 를 증명하십시오 . t 는 타입 A → B를 가지고 있고 , x 가 타입 A 의 변수 라고 가정 할 때 t 는 타입 B를 가지고 있음을 보여 주어야합니다 (대응? 참조).
세 번째 수준의 의미는 가로 막대로 구체화되며 "모든 전제 (상단의 요소)가 유지되면 결론 (하단의 요소)이 유지됨"을 의미합니다. 당신 이 준 abstraction 에 대한 타이핑 규칙의 해석에 이것을 연결할 수 있습니다 (이전 단락의 설명 참조).