추상 위키백과/업데이트/2021-05-11
◀ | 추상 위키백과 업데이트 | ▶ |
- 델타(δ) 단계 완료.
위키함수 사이트에 대한 개발 노력을 시작했을 때, 우리는 위키함수의 출시까지 이어지는 작업을 그리스 알파벳의 첫 11자 이름을 따서 명명 된 11단계로 세분화했습니다.
- 알파(α) 단계가 완료되면서, 위키에서 시스템 제공 유형의 인스턴스를 생성할 수 있게 되었습니다.
- 베타(β) 단계를 사용하여 위키에서 유형을 생성하고 이러한 유형의 인스턴스를 생성할 수 있게 되었습니다.
- 감마(γ) 단계와 함께, 프리-제너릭 함수 모델의 모든 주요 유형을 사용할 수 있습니다.
- 이번 주, 우리는 델타(δ) 단계를 완료했습니다.
델타(δ) 단계의 목표는 내장된 구현을 평가하는 기능을 제공하는 것이었습니다.
이것은 무엇을 의미하나요? 위키함수의 모든 함수는 여러 가지 구현을 가질 수 있습니다. 구현을 표현하는 세 가지 방법이 있습니다:
- 위키함수 사용자가 작성한 프로그래밍 언어의 일부 코드: 함수의 구현은 위키함수가 지원하는 모든 프로그래밍 언어로 제공 될 수 있습니다. 결국 우리는 많은 프로그래밍 언어를 지원하는 것을 목표로하지만 작은 것부터 시작할 것입니다.
- 개발 팀이 작성한 기본 제공 함수: 이는 평가자가 구현을 블랙 박스로 처리 함을 의미합니다. 각 평가자가 모든 내장 함수를 사용 가능하게 구현해야하므로 매우 적은 수의 필수 내장 함수에만 의존하기를 바라며, 우리는 가능한 한 쉽게 새로운 평가자 (그리고 새로운 프로그래밍 언어)를 추가하기를 원합니다. 현재 사용 가능한 내장 함수 목록은 다음과 같습니다. 이 목록은 최종 목록이 아닐 가능성이 높지만 늘어나지 않기를 바랍니다.
- 다른 함수의 구성: 이는 새로운 기능을 구현하기 위해 기존 함수를 빌딩 블록으로 사용함을 의미합니다. 몇 가지 구성된 구현의 예를 게시했습니다 불리언 함수의 구현 예는 특히 유용 할 수 있습니다.
델타(δ) 단계에서, 우리는 함수 호출을 평가하기 위한 인프라와 인터페이스를 만들었으며 내장 구현을 허용했습니다. 현재 사용할 수있는 내장 함수는 다음과 같습니다:
If : Boolean, Any, Any ➝ Any
— 첫 번째가 참이면 두 번째 인수를 반환하고 그렇지 않으면 세 번째 인수를 반환합니다. 두 글자가 있는 경우.Value by key : Key reference, Any ➝ Any
— 주어진 객체의 주어진 키 값을 반환합니다.Reify : Any ➝ List(Pair(Key reference, Any))
— 모든 객체를 키-값 쌍 목록으로 변환합니다; 객체를 분해합니다.Abstract : List(Pair(Key reference, Any)) ➝ Any
— 키-값 쌍 목록을 객체로 변환합니다; 그것은 객체를 구성합니다Cons : Any, List ➝ List
— 정렬된 객체 목록 앞에 객체를 삽입합니다.Head : List ➝ Any
— 목록의 첫 번째 항목을 가져옵니다.Tail : List ➝ List
— 첫 번째 항목이 제거된 목록을 가져옵니다.Empty : List ➝ Boolean
— 목록에 항목이 없으면 반환합니다.First : Pair ➝ Any
— 쌍의 첫 번째 값을 추출합니다.Second : Pair ➝ Any
— 쌍의 두 번째 값을 추출합니다.Convert : String ➝ List(Character)
— 문자열을 문자 목록으로 변환합니다.Convert : List(Character) ➝ String
— 문자 목록을 문자열로 변환합니다.Same : Character, Character ➝ Boolean
— 두 문자를 비교하고 같으면 반환합니다.Unquote : Quote ➝ Any
— 인용문을 닫습니다.
이러한 내장 기능의 모든 구현은 간단하지만 초안이며 현재는 가볍게 테스트되었습니다. 테스트하고 문제를 발견하면 파브리케이터에 보고하거나 우리 메일링 리스트로 이메일을 보내주세요. 다음 주에 걸쳐 이를 개선 할 것입니다.
두 스크린 샷은 함수 호출을 평가할 수있는 새로운 특수 페이지를 보여줍니다. 여기에 예제와 함께 두 개의 스크린 샷이 있습니다. 첫 번째는 If 함수에 대한 호출을 보여줍니다. 조건이 참(true)으로 설정되어 있으므로 함수 호출은 결과(문자열 "this"로 주어짐)를 반환해야하며 대안(문자열 "that"으로 주어짐)이 아닙니다. 실제로 함수 호출 아래의 오케스트레이션 결과는 문자열 "this"를 나타내는 정규화된 결과를 보여줍니다:
두 번째 예제는 단계 계획의 단계 완료 조건에서 바로 가져옵니다. 여기서 우리는 빈 리스트가 실제로 비어 있는지 확인합니다 (Z813/Empty 함수를 호출하고 인수 Z813K1/list는 빈 목록입니다). 결과는 참(true)입니다(예를 들어, Z40K1/identity Z41/true인 Z40/불리언).
출시 전에 UX 개선을 약속드립니다! 이 원시 JSON 출력은 대부분 사용자 경험을 위한 디자인 언어로 작업하기 때문에 디버깅 및 내부 개발 목적으로 사용됩니다.
이제 입실론(ε) 단계로 이동합니다. 이 단계에서는 프로그래밍 언어로 사용자가 작성한 구현을 지원하는 것을 목표로합니다. 우리의 초기 계획은 자바 스크립트와 파이썬으로 작성된 코드를 지원하는 것입니다.
인터넷에서 누군가가 작성한 임의의 코드를 실행하면 보안 및 성능 위험이 매우 크기 때문에 재단 전체의 동료들과 함께 작업하는 철저한 보안과 성능 검토를 통해 이 단계의 작업을 추적 할 것입니다.
우리는 현재 실행중인 위키람다 시스템의 공식 공개 테스트 인스턴스가 없습니다. 루카스 베르크마이스터(Lucas Werkmeister)는 자원 봉사자로서 지금까지 정기적으로 업데이트되는 공개 테스트 인스턴스인 "notwikilambda"를 제공했습니다. 감사합니다. 하지만 해당 인스턴스는 아직 오케스트레이터 백엔드를 지원하도록 업데이트되지 않았습니다(그렇게하는 방법을 문서화해야합니다). 보안과 성능 검토가 완료 될 때까지 자체 인스턴스를 계속 실행하지 않을 것입니다(그러나 다른 사람이 그렇게하는 것을 확실히 막지는 않을 것이며 누군가 설정을 원할 경우 일반적인 채널에서 약간의 지원을 제공할 수 있습니다).
현재 단계가 끝나면 제타(ζ) 단계로 이동하여 세 번째 유형의 구현인 구성을 허용합니다.
지금까지 우리를 여기까지 데려 오는데 많은 노력을 기울인 팀, 자원 봉사자들에게 감사하고 프로젝트의 다음 단계가 기대됩니다!
(참고: 다음 주에는 뉴스 레터가 없습니다.)