ISWIM
ISWIM![]() |
패러다임 | 필수 기능 |
---|---|
설계자 | 피터 랜딘 |
처음 등장한 | 전 |
영향을 받다 | |
ALGOL 60, 리스프 | |
영향받은 | |
SASL, Miranda, ML, Haskell, Clean, Lucid |
ISWIM(Acronym for If See What I Mean)은 Peter Landin이 고안한 추상 컴퓨터 프로그래밍 언어(또는 언어 패밀리)로 [1]1966년 ACM 통신에 게재된 기사 "The Next 700 Programming Languages"에서 처음 기술되었습니다.
구현되지는 않았지만, 특히 SASL, 미란다, ML, 해스켈과 그 후속 프로그램과 같은 기능성 프로그래밍 언어 및 루시드와 같은 데이터 흐름 프로그래밍 언어의 개발에 큰 영향을 미쳤습니다.
설계.
ISWIM은 함수 코어를 가진 명령형 프로그래밍 언어이며, 가변 변수와 할당이 추가된 람다 미적분의 구문적 설탕 처리와 강력한 제어 메커니즘인 프로그램 포인트 연산자로 구성됩니다.ISWIM은 람다 미적분을 기반으로 고차 함수와 어휘 범위 변수를 가지고 있습니다.
ISWIM의 동작 시맨틱스는 Landin의 SECD 머신을 사용하여 정의되며 값별 콜을 사용합니다.이것은 열렬한 [2]평가입니다.ISWIM의 목표는 수학 표기법처럼 보이는 것이었다. 그래서 Landin은 문장과 문장 사이에 ALGOL의 세미콜론을 버렸다.begin
...end
블록하고 오프사이드 규칙으로 대체하고 들여쓰기를 기반으로 범위를 지정합니다.
ISWIM의 특징적인 기능은 구를 사용하는 것입니다.ISWIM 프로그램은 구(변수 간의 방정식을 포함한 보조 정의), 조건식 및 함수 정의에 의해 수식된 단일 식입니다.ISWIM은 CPL과 함께 where 구를 사용한 최초의 프로그래밍 언어 중 하나였습니다.
주목할 만한 의미 기능은 새로운 데이터 유형을 (재귀적일 수 있는) 제품의 합계로 정의할 수 있다는 것입니다.이것은 다소 장황한 자연어 스타일의 설명을 사용하여 이루어졌지만, 표기법과는 별개로 현대 기능 [citation needed]언어에서 볼 수 있는 대수적 데이터 유형에 정확히 해당합니다.ISWIM 변수는 명시적 유형 선언을 가지고 있지 않으며 랜딘은 언어를 LISP처럼 역동적으로, 그리고 ALGOL과 다르게 입력하도록 의도했을 가능성이 있다. 그러나 그가 어떤 형태의 유형 추론을 개발하고자 의도했을 수도 있다.
구현 및 파생상품
ISWIM의 직접적인 구현은 Art Evan의 언어 [3]PAL과 John C 이외에는 시도되지 않았습니다. 레이놀즈의 언어 게단켄은 [4]강력한 통제 이전 작업을 포함한 랜딘의 개념 대부분을 포착했습니다.둘 다 동적으로 입력되었습니다.로빈 밀너의 ML은 J 연산자가 없고 형식 추론이 있는 ISWIM과 동등한 것으로 간주될 수 있다.
ISWIM의 또 다른 계통은 필수 기능(할당 및 J 연산자)을 제거하여 순수하게 기능적인 언어를 [5]남기는 것입니다.그러면 게으른 평가로 전환할 수 있게 됩니다.이 경로를 통해 SASL, Kent Recursive Calculator(KRC), Hope, Miranda, Haskell 및 Clean 프로그래밍 언어가 생성되었습니다.
레퍼런스
- ^ Landin, P. J. (March 1966). "The Next 700 Programming Languages" (PDF). Communications of the ACM. Association for Computing Machinery. 9 (3): 157–165. doi:10.1145/365230.365257. S2CID 13409665.
- ^ Plotkin, Gordon (1975). Call-by-Name, Call-by Value and the Lambda Calculus (PDF) (Report).
- ^ Evans, Art (1968). "PAL: a language designed for teaching programming linguistics". Proceedings ACM National Conference. ACM National Conference. Association for Computing Machinery.
- ^ Reynolds, John C. (September 1969). GEDANKEN: a simple typeless language which permits functional data structures and co-routines (Report). Argonne National Laboratory.
- ^ Ivanović, Mirjana; Budimac, Zoran (April 1993). "A definition of an ISWIM-like language via Scheme". ACM SIGPLAN Notices. 28 (4): 29–38. doi:10.1145/152739.152743. S2CID 14379260.