니알
Nial![]() | |
| 패러다임 | 배열 |
|---|---|
| 설계자 | 마이크 젠킨스 |
| 개발자 | 니알 시스템즈 |
| 처음 등장한 | 1981 |
| 안정된 릴리스 | 7.0 / 2017; (2017 |
| 타이핑 분야 | 역학 |
| 면허증. | GNU GPLv3 |
| 파일 이름 확장자 | .ndf, .nlg |
| 웹 사이트 | www |
| 주요 구현 | |
| 큐니얼 | |
| 영향을 받다 | |
| APL, 리스프 | |
Nial ("내스트 인터랙티브 어레이 언어"에서 유래)는 캐나다 온타리오주 킹스턴 퀸즈 대학의 마이크 젠킨스에 의해 1981년경부터 개발된 고급 배열 프로그래밍 언어입니다.Jenkins는 Jenkins-Traub 알고리즘을 공동 개발했습니다.
Nial은 Trenchard More가 개발한 배열 이론에 기반한 배열에 대한 함수 프로그래밍 표기법과 숫자, 문자 및 기호 데이터를 위한 구조화된 프로그래밍 개념을 결합합니다.
시제품 제작 및 인공지능에 가장 많이 사용됩니다.
큐니얼
[1] 1982년 Jenkins는 Nial의 언어와 Q'Nial 구현을 마케팅하기 위해 회사(Nial Systems Ltd)를 설립했습니다.2014년 현재 회사 웹사이트는 다운로드 가능한 바이너리와 소스를 사용하여 Q'Nial 소프트웨어를 위한 오픈 소스 프로젝트를 지원합니다.이 라이선스는 Artistic License 1.0에서 파생되었으며 유일한 차이점은 "Copyright Holder"의 정의("패키지의 저작권 또는 저작권에 이름이 있는 사용자"에서 "NIAL Systems Limited"로 변경됨) 및 "who"의 인스턴스("who"로 변경됨)입니다.
니알 개념
Nial은 버전 4에서 일반화되고 표현적인 어레이 이론을 사용하지만 기능 모델의 일반성을 일부 희생하고 버전 6에서 어레이 이론을 수정했습니다.현재 버전 6만 사용할 수 있습니다.
Nial은 모든 데이터 유형을 중첩된 직사각형 배열로 정의합니다.int, boulan, chars 등은 단독 배열 또는 단일 멤버를 포함하는 배열로 간주됩니다.어레이 자체는 다른 어레이를 포함하여 임의의 깊은 구조를 형성할 수 있습니다.Nial은 레코드도 제공합니다.이들은 비균질 어레이 구조로 정의됩니다.
Nial의 함수를 Operations라고 합니다.Nial 매뉴얼에서: "연산은 인수 배열이 주어지고 결과 배열을 반환하는 함수 개체입니다.인수값을 부여하여 조작을 실행하는 프로세스를 오퍼레이션콜 또는 오퍼레이션애플리케이션이라고 부릅니다.
업무의 적용
다른 APL에서 파생된 언어와 마찬가지로 nial을 사용하면 이진 연산자와 연산을 통합할 수 있습니다.따라서 아래 표기는 동일한 의미를 가집니다.주의:sum와 같다+
이진 연산:
2 + 3 2의 합계 3
배열 표기법:
+ [2,3] 합계 [2,3]
스트랜드 표기법:
+ 2 3 합계 2 3
그룹화된 표기법:
+ (2 3)의 합계 (2 3)
Nial은 고차 함수인 변압기도 사용합니다.인수 연산을 사용하여 변경된 새 연산을 구성합니다.
twice는 two transform f(f f)2회 rest [4, 5, 6, 7, 8]6 7 8
지도책
[2] Nial의 Atlas는 일련의 구성 요소 작업으로 구성된 작업입니다.Atlas가 값에 적용되면 Atlas의 각 요소가 값에 차례로 적용되어 결과를 제공합니다.이것은 점 없는(변수 없는) 스타일의 정의를 제공하는 데 사용됩니다.변압기에서도 사용됩니다.다음 예시에서 'inner [+,*]'는 목록 '[+,*]'의 지도책입니다.
예
어레이 작성
카운트 6 1 2 3 4 5 6
어레이는 리터럴도 가능
Arr : = [ 5, 6, 7, 8, 9 ]5 6 7 8 9
쉐이프는 배열 치수를 제공하며 쉐이프를 사용하여 치수를 변경할 수 있습니다.
형상 Ar5
a := 2 3 reshape Ar # reshape은 두 개의 인수가 있는 이진 연산입니다.접두사 # a:= reshape [[2,3], Arr] 5 6 7 8 9 5로 쓸 수도 있습니다.
b : = 3 2 형태 Arr 5 6 7 8 9 5
a[+,*] b 130 113 148 145
평균 계산
정의는 '<name> is <expression>' 형식입니다.
평균은 /[합계, 집계] 평균 Arr 7입니다.
요인 계산
팩트 반복 [0 =, 1 우선, 합격, 곱, -1 +] 팩트 4 24
배열 반전
rev는 [shape, ross [pass, pass, converse append]rev [1, 2, 3, 4]4 3 2 1
소수점 생성
APL과의 대비
primes는 하위 목록 [각 (2 = sum eachright (0 = mod) [pass, count]), pass ]휴면 수 10 2 3 5 7
설명.
A의 B로 나누기 가능성의 확인은 0 = mod [A,B]
is_prime 필터 정의
is_prime은 2 = 각 권리의 합은 _divulable [pass, count]
카운트는 어레이를 생성합니다[ 1 .N ] 、 pass는 N(아이덴티티 조작)입니다.각 권한은 카운트 생성 배열의 각 요소에 is_divulable(통과, 요소)을 적용합니다.따라서 카운트 생성 배열은 N을 나눌 수 있는 숫자가 '1'로 대체되고 다른 숫자는 '0'으로 대체되는 배열로 변환됩니다.따라서 숫자 N이 소수일 경우 [변환된 배열]의 합은 2여야 합니다(자신과 1).
이제 카운트 N을 사용하여 다른 어레이를 생성하고 소수가 아닌 모든 어레이를 필터링하기만 하면 됩니다.
primes는 서브리스트 [각 is_prime, pass]의 휴지수입니다.
퀵소트
link인수 배열에 참여하다sublist[A,B]는 A에 주어진 부란 목록에 따라 선택된 B의 항목 목록을 반환하고, A의 해당 항목이 참인 B의 항목을 선택한다.- 에
Fork[A,B,C] X 첫 번째 A는 술어이며, A(X)가 참이면 B(X)가 반환되고, 그렇지 않으면 C(X)가 반환된다. Pass는 어레이의 ID 조작입니다.
quicksort는 fork [ > = [ 1 first , first ] , pass , link [ quicksort sublist [ < [ pass , first ] , pass ] , sublist [ match [ pass , first ] , pass ] , ] 、 quicksort sublist ] ] 。
사용방법:
quicksort [5, 8, 7, 4, 3]3 4 5 7 8
레퍼런스
- ^ "The Nial Language". GitHub. 17 December 2021.
- ^ "Q'Nial Dictionary V7".
