추상 위키백과/프리-제네릭 함수 모델
- 이 페이지는 역사적인 내용이며 현재 상황을 설명하지 않습니다. 함수 모델의 현재 버전을 보려면 f:위키함수:함수 모델을 참조하세요.
현재 함수 모델은 위키를 런칭할 예정인 시점에 대한 위키함수의 함수 모델을 규정하고 있습니다. 특히, 우리는 이미 함수가 완전하고, 함수와 함수 호출, 구성 및 제네릭 유형을 실행할 수 있는 능력이 있다고 가정합니다. 그러나 제타(ζ) 단계까지는 사용할 수 없습니다. 이것은 중심 유형의 제네릭이 아닌 버전을 즉석에서 가져와야 하기 때문에 현재 초기 단계의 작업 구현을 방해합니다.
(실제로는 더 나쁩니다. 실제로 함수 모델은 시작 함수 모델과 프리-제네릭 모델 사이의 이상한 하이브리드입니다; 우리는 프리-제네릭 함수 모델을 정의하는 것부터 시작하여 이번 재작성으로 두 부분을 모두 정리하고 싶습니다.)
이 장벽을 해결하기 위해 제네릭을 사용할 수 있을 때까지 임시 해결책으로 의미하는 전체 함수 모델의 단순화된 버전을 여기에서 제공합니다.
한 가지 전반적인 차이점은 제네릭이 없으면 로컬 키의 필요성이 크게 줄어든다는 것입니다. 따라서 전체 함수 모델은 로컬 키가 없거나 정규화에서 제거할 수 있다고 가정합니다. 제네릭이 있으면 불가능합니다.
아래 목록에서 "차이 없음"은 이 유형이 제네릭 이전 모델과 전체 함수 모델에서 동일함을 의미합니다.
ZID는 최종적이지 않습니다. 여기에서 토론이 진행 중입니다.
Z1/객체 (Z4/유형)
- Z1K1/type (Z4/Type)
차이 없음.
Z2/영구 객체 (Z4/유형)
- Z2K1/id (Z6/String)
- Z2K2/value (Z1/Object)
- Z2K3/label (Z12/Multilingual text)
- Z2K4/aliases (Z32/Multilingual set)
- Z2K5/description (Z12/Multilingual text)
차이 없음.
Z3/키 (Z4/유형)
- Z3K1/value type (Z4/Type)
- Z3K2/key id (Z6/String)
- Z3K3/label (Z12/Multilingual text)
차이 없음.
Z4/유형 (Z4/유형)
- Z4K1/identity (Z4/Type)
- Z4K2/keys (Z10/List)
- Z4K3/validator (Z8/Function)
Z4K2는 Z3/키의 Z10/리스트를 예상해야 하지만 아직 불가능합니다. 따라서 Z10/리스트만 예상합니다.
Z4K3은 Z1/객체 유형의 단일 입력을 취하고 Z10/Z5/오류 목록을 반환하는 Z8/함수를 예상해야 하지만 이는 아직 불가능하므로 Z8/함수일 뿐입니다.
Z5/오류 (Z4/유형)
- Z5K1/error type (Z50/Error type)
- Z5K2/error value (Z1/Any)
아마 차이가 없을까요?
Z6/문자열 (Z4/유형)
- Z6K1/string value (Z6/String)
차이 없음.
Z7/함수 호출 (Z4/유형)
- Z7K1/function (Z8/Function)
- Others based on Z8/Function
이것은 크게 바뀔 것입니다. 제네릭 이전 버전에서 이것은 인스턴스가 다른 유형의 인스턴스와 크게 다른 동작을 하는 Z4/유형입니다. 키는 Z4/유형이 아니라 Z8/함수에 의해 정의됩니다. 이것은 프리-제네릭 세계에서 특별한 처리가 필요합니다. 포스트 제네릭 세계를 위해 우리는 통합된 처리를 받기를 희망합니다. 여기에서 토론을 참조하세요.
Z8/함수 (Z4/유형)
- Z8K1/arguments (Z10/List)
- Z8K2/return type (Z4/Type)
- Z8K3/testers (Z10/List)
- Z8K4/implementations (Z10/List)
- Z8K5/identity (Z8/Function)
이것은 크게 바뀔 것입니다. 프리-제네릭 버전에서 이것은 Z4/유형이고 나중에 기본적으로 주어진 키를 갖는 Z8/함수가 될 것입니다. Z8K1/인수는 Z10/Z17/인수 선언 목록(TBD)이어야 합니다. Z8K3 및 Z8K4는 Z10/Z20/테스터의 목록이어야 하며, 주어진 Z8/함수를 인수로 사용하는 Z14/구현이어야 합니다. 완전히 기준 미달이어야합니다.
Z9/참조 (Z4/유형)
- Z9K1/reference ID (Z6/String)
차이 없음.
Z10/리스트 (Z4/유형)
- Z10K1/head (Z1/Object)
- Z10K2/tail (Z10/List)
이것은 고전적인 제네릭 Z4/유형이 될 것입니다. 프리-제네릭 버전에서는 Z1/객체를 값으로 사용하고 Z10/리스트를 연속으로 사용합니다. 포스트 제네릭 세계에서 이것은 머리에 대한 유형이 주어진 Z4/유형이 될 Z4/유형(매개변수화된 목록)을 반환하는 Z4/유형 유형의 단일 인수가 있는 Z8/함수가 되고, 꼬리에 대한 유형은 동일한 유형으로 매개변수화된 Z10/리스트입니다.
Z11/단일 언어 텍스트 (Z4/유형)
- Z11K1/language (Z60/Language)
- Z11K2/text (Z6/String)
차이 없음.
Z12/다국어 텍스트 (Z4/유형)
- Z12K1/texts (Z10/List)
Z12K1 유형은 Z11/단일 언어 텍스트의 Z10/리스트가 되어야 합니다.
Z14/구현 (Z4/유형)
- Z14K1/function (Z8/Function)
- Z14K2/composition (Z1/Any)
- Z14K3/code (Z16/Code)
- Z14K4/built in (Z6/String)
이것은 함수를 인수로 취해야 합니다. 다시 생각해 볼 필요가 있습니다.
Z16/코드 (Z4/유형)
- Z16K1/language (Z61/Programming language)
- Z16K2/code (Z6/String)
Z16K3/signature (Z10/List)
서명은 Z4/유형의 Z10/리스트입니다. 이는 제네릭 모델에서만 필요합니다: 정의의 서명과 별도의 서명을 갖는 유일한 이유는 함수를 실행하기 전에 값을 평가할 필요가 없을 수도 있기 때문입니다.
Z17/인수 선언
- Z17K1/argument type (Z4/Type)
- Z17K2/key id (Z6/String)
- Z17K3/label (Z12/Multilingual text)
차이 없음. 그러나 그것이 존재할 필요가 있습니까? 아니면 Z3/키일 수 있나요?
Z18/인수 참조 (Z4/유형)
- Z18K1/key id (Z6/String)
차이 없음.
Z20/테스터 (Z4/유형)
- Z20K1/function (Z8/Function)
- Z20K2/call (Z7/Function call)
- Z20K3/result validation (Z7/Function call)
Z21/단위 (Z4/유형)
- (키 없음)
차이 없음.
Z22/쌍 (Z4/유형)
- Z22K1/first (Z1/Object)
- Z22K2/second (Z1/Object)
이것도 제네릭이 됩니다.
Z23/무 (Z4/유형)
- (키 없음)
차이 없음.
Z31/단일어문자열집합 (Z4/유형)
- Z31K1/언어 (Z60/언어)
- Z31K2/문자열집합 (Z10/리스트)
Z31K2/문자열집합은 Z6/문자열의 Z10/리스트입니다.
Z32/다국어문자열집합 (Z4/유형)
- Z21K1/문자열집합 (Z10/리스트)
Z32K1/문자열집합은 Z31/단일어문자열집합의 Z10/리스트가 됩니다.
Z39/키 참조 (Z4/유형)
- Z39K1/참조 (Z6/문자열)
차이 없음.
Z40/불리언 (Z4/유형)
- Z40K1/identity (Z40/Boolean)
차이 없음.
Z50/오류 유형 (Z4/유형)
- Z50K1/keys (Z10/List)
- Z50K2/...: 키가 주어지면 이것을 문자열로 바꾸는 것. 이것은 나중에 추가됩니다.
이 변경됩니다. Z50K1은 Z3/키의 Z10/리스트가 될 것이고, 더 중요한 것은 이것이 Z4/유형을 생성하는 함수가 될 것입니다.
Z60/언어 (Z4/유형)
- Z60K1/code (Z6/String)
- Z60K2/code aliases (Z10/List)
차이 없음.
Z61/프로그래밍 언어 (Z4/유형)
- Z61K1/code (Z6/String)
차이 없음.
Z70/유니온 (Z4/유형)
프리-제네릭 모델에는 존재하지 않습니다.
Z80/바이트 (Z4/유형)
- Z80K1/value (Z6/String)
차이 없음.
Z86/코드 포인트 (Z4/유형)
- Z86K1/value (Z6/String)
차이 없음.
Z99/인용 (Z4/유형)
- Z99K1/quotation (Z1/Object)
차이 없음.