2015-01-14 2 views
3

Dyalog APL에는 동봉 작동 방식을 변경하는 ⎕ML이 있습니다. 때 ⎕ML ← 0GNU APL 및 Dyalog의 동봉 동작 APL

(5 ⍴ 1 0) GNU 동일한 문 (5 ⍴ 1 0) 5 5 ⊂ ⍴ ⍳25 들어 ⊂ 5 5 ⍴ ⍳25

┌→─────────────────────┐ 
│ ┌→────┐ ┌→────┐ ┌→─┐ │ 
│ ↓ 1 2│ ↓ 3 4│ ↓ 5│ │ 
│ │ 6 7│ │ 8 9│ │10│ │ 
│ │11 12│ │13 14│ │15│ │ 
│ │16 17│ │18 19│ │20│ │ 
│ │21 22│ │23 24│ │25│ │ 
│ └~────┘ └~────┘ └~─┘ │ 
└∊─────────────────────┘ 

APL

┏→━━━━━━━━━━━━━┓ 
↓┏→┓ ┏→┓ ┏→┓ ┃ 
┃┃1┃ ┃3┃ ┃5┃ ┃ 
┃┗━┛ ┗━┛ ┗━┛ ┃ 
┃┏→┓ ┏→┓ ┏→━┓┃ 
┃┃6┃ ┃8┃ ┃10┃┃ 
┃┗━┛ ┗━┛ ┗━━┛┃ 
┃┏→━┓ ┏→━┓ ┏→━┓┃ 
┃┃11┃ ┃13┃ ┃15┃┃ 
┃┗━━┛ ┗━━┛ ┗━━┛┃ 
┃┏→━┓ ┏→━┓ ┏→━┓┃ 
┃┃16┃ ┃18┃ ┃20┃┃ 
┃┗━━┛ ┗━━┛ ┗━━┛┃ 
┃┏→━┓ ┏→━┓ ┏→━┓┃ 
┃┃21┃ ┃23┃ ┃25┃┃ 
┃┗━━┛ ┗━━┛ ┗━━┛┃ 
┗∊━━━━━━━━━━━━━┛ 

Dyalog APL이는 ⎕ML ← 3

은 GNU APL이 같은 행동을 얻기 위해 동작하는 방식을 변경할 수있는 방법이있을 때입니까? GNU APL이 IBM APL2 언어 규칙 다음 있기 때문에

답변

5

짧은 대답은, 아니입니다.

코어 APL 언어는 1970 년대 중반에 개발되어 완성되었습니다. 그러나 Nested Arrays가 조금 후에 시작되었으므로 아마도 1980 년 경부터 최초의 사전 스 니크 피크 구현이 나왔을 것입니다.

당시 주요 선수는 IBM, I. P. Sharp Associates, STSC 및 Dyalog였습니다. 모든 중첩 된 배열 구현은 하나 또는 여러 세부 사항에서 틀렸습니다. 가장 큰 차이점은 Sharp의 박스형 배열 구현이 오늘날 J에서 볼 수있는 박스형 배열 구현의 기본 요소였습니다.

아마도 Mainframe IBM APL2는 아마도 가장 큰 시장 점유율을 보였을 것입니다.

나중에 STSC는 이름을 Manugistics로 변경하고 구현은 APL2000의 APL + 제품군으로 발전 할 것입니다.

STSC와 Dyalog 모두 다양한 내포 된 배열 하위 종에 대해 호환 모드를 제공했으며, STSC는 EVLEVEL 시스템 명령, 진화 수준이었으며 Dyalog 's는 마이그레이션 수준이었습니다. 요컨대

는 Dyalog의은 [] ML은

[]ML 0

기본 네이티브 Dyalog 중첩 배열 구현

[]ML 1이고, 0, 1, 2 또는 Dyalog 설명서 3. 설정된 정의를 변경 할 수있다 모나드 엡실론의 "enlist"기능, 일종의 수퍼 - 괘선

[]ML 2은 "첫 번째"및 "믹스"기능에 사용 된 기호의 정의를 바꾸고, "깊이" 함수

[]ML 3은 IBM APL2와 호환됩니다.

개인적으로 필자는 메인 프레임이 여전히 주변에있을 때 APL2에서 많이 프로그래밍 했으므로 개인적으로 [] ML 3을 거의 독점적으로 사용합니다.

다시 GNU APL은 IBM APL2 언어 호환성을 따릅니다. 대체 둘러싸 기 동작을 수행하는 한 가지 방법은 다른 구현의 전문을 모방하는 표지 기능을 작성하는 것입니다.

+0

감사합니다. 어쩌면 나는 ⎕ML을 gnuapl로 빌드해야합니다! – alexweiner

+0

무수한 종교 토론의 포인트 중 하나는 그것이 비행 중에 언어 기능을 변경할 수있는 좋은 일인지 여부입니다.그런 굉장한 힘은 엄청난 책임과 모든 것을 가져옵니다. – Lobachevsky

+1

몇 년 전 많은 전문가들이 기존의 APL 인터프리터의 동작을 분석하고 첨단 기술을 [ISO/IEC 13751 : 2001 "APL 확장 표준]으로 증류했습니다. http://www.math.uwaterloo.ca/~ljdickey/apl-rep/docs/is13751.pdf), 이는 GNU APL이 따르고 자하는 것입니다. – Tobia