패턴 미적분학이 언어로 한 단계 발전 했습니까? 아니면 LISP로 돌아가고 있습니까?


11

배리 제이는 자신의 저서 에서 대담한 주장을한다. 기본적으로 프로그램의 핵심에서 모든 것이 원자 적이거나 구성되었다고 말함으로써. 그런 다음이 컴포지션 관계를 탐색하여 쉽게 반복, 필터링, 업데이트 할 수 있습니다.

이것이 컴퓨터 언어에 대한 컴퓨터 과학 의 새로운 개척 인가? 아니면 우리는 다시 LISP로 돌아가고 있는가?


13
Lisp로 돌아가는 것은 한 걸음 앞으로 나아갈 것입니다.
Shane

4
이것은 명확하게 정의 된 질문이 아닙니다. 커뮤니티 위키로 만들어야합니다.
Charles Stewart

@Shane에 동의하지만 유형과 최신 라이브러리가 필요하다고 생각합니다.
hawkeye

답변:


6

Jay의 최근 작업의 주요 이점 중 하나는 map 과 같은 작업을 수행하기 위해 데이터 구조를 탐색하기 위해 작성해야하는 상용구 코드를 줄이는 것 입니다. 패턴 미적분을 사용하면 모든 데이터 구조에 대해 순회 코드를 한 번 작성하여 자신의 데이터 구조에 적용 할 수 있습니다. 이렇게하면 필요한 코드의 양이 줄어들지 만 다른 방법으로는 작성할 수없는 프로그램을 작성할 수 없습니다. 확실히 작품에는 많은 흥미로운 아이디어가 있지만 실제로 작동한다는 것을 증명해야합니다.


6

Barry Jay의 최근 작업에는 익숙하지 않지만 그의 오래된 작업에는 Lisp에서 수행 할 수없는 작업이 포함됩니다 . 유형에 추가 정보가 제공되기 때문입니다.

예를 들어, Lisp 데이터 구조의 크기를 정의한다고 가정하십시오. 원자의 경우 1이고 n 개의 원자 목록의 경우 n 이며,보다 일반적으로 size (x) + size (y)입니다 (cons x y).

이제 믹스에 유형을 넣습니다. 리스트의 크기는 길이입니다. 이제 원자 목록의 크기는 얼마입니까? 이 데이터 구조를 목록 (요소가 원자 목록이 됨)으로 간주하면 답이 목록의 길이입니다. 이 데이터 구조를 목록 목록에 저장되는 원자를 포함하는 것으로 간주하면 답은 요소 목록의 길이의 합입니다.

유형을 사용하면 원시 데이터의이 두보기 (모양)를 구별 할 수 있습니다. (List) (List Atom)과 (List List) (Atom)을 구별 할 수있는 유형 시스템이 필요합니다. 이 구별의 가장 일반적인 구현은 유형 클래스를 사용하는 것입니다 (하스켈에서와 같이).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.