추상 위키백과/프리-제네릭 함수 모델

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Pre-generic function model and the translation is 100% complete.
이 페이지는 역사적인 내용이며 현재 상황을 설명하지 않습니다. 함수 모델의 현재 버전을 보려면 f:위키함수:함수 모델을 참조하세요.

메일링 리스트를 통한 추상 위키백과 IRC의 추상 위키백과 텔레그램의 위키함수 마스토돈의 위키함수 트위터의 위키함수 페이스북의 위키함수 유튜브의 위키함수 위키함수 웹사이트 Translate

현재 함수 모델은 위키를 런칭할 예정인 시점에 대한 위키함수의 함수 모델을 규정하고 있습니다. 특히, 우리는 이미 함수가 완전하고, 함수와 함수 호출, 구성 및 제네릭 유형을 실행할 수 있는 능력이 있다고 가정합니다. 그러나 제타(ζ) 단계까지는 사용할 수 없습니다. 이것은 중심 유형의 제네릭이 아닌 버전을 즉석에서 가져와야 하기 때문에 현재 초기 단계의 작업 구현을 방해합니다.

(실제로는 더 나쁩니다. 실제로 함수 모델은 시작 함수 모델과 프리-제네릭 모델 사이의 이상한 하이브리드입니다; 우리는 프리-제네릭 함수 모델을 정의하는 것부터 시작하여 이번 재작성으로 두 부분을 모두 정리하고 싶습니다.)

이 장벽을 해결하기 위해 제네릭을 사용할 수 있을 때까지 임시 해결책으로 의미하는 전체 함수 모델의 단순화된 버전을 여기에서 제공합니다.

한 가지 전반적인 차이점은 제네릭이 없으면 로컬 키의 필요성이 크게 줄어든다는 것입니다. 따라서 전체 함수 모델은 로컬 키가 없거나 정규화에서 제거할 수 있다고 가정합니다. 제네릭이 있으면 불가능합니다.

아래 목록에서 "차이 없음"은 이 유형이 제네릭 이전 모델과 전체 함수 모델에서 동일함을 의미합니다.

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)

차이 없음.

같이 보기