program story

매크로를 사용한 훌륭한 응용 프로그램 및 프로그램 모음

inputbox 2020. 12. 26. 10:01
반응형

매크로를 사용한 훌륭한 응용 프로그램 및 프로그램 모음


저는 Macros에 매우 관심이 있으며 그 진정한 힘을 이해하기 시작했습니다. 매크로 시스템의 훌륭한 사용법을 수집하도록 도와주세요.

지금까지 다음과 같은 구성이 있습니다.

패턴 매칭 :

Andrew Wright와 Bruce Duba. Scheme, 1995의 패턴 매칭

프롤로그 정신의 관계 :

도라이 시타 람. schelog에서 프로그래밍. http://www.ccs.neu.edu/home/dorai/schelog/schelog.html

Daniel P. Friedman, William E. Byrd 및 Oleg Kiselyov. 합리적인 계획자. MIT Press, 2005 년 7 월

Matthias Felleisen. Prolog를 Scheme으로 음역합니다. 기술 보고서 ​​182, 인디애나 대학교, 1985.

확장 가능한 루핑 구성 :

Sebastian Egner. Scheme의 열렬한 이해 : SRFI-42의 디자인. 계획 및 함수형 프로그래밍 워크샵, 페이지 13–26, 2005 년 9 월.

Olin Shivers. 루프의 구조 : 범위와 제어의 이야기. 2005 년 기능 프로그래밍에 관한 국제 회의, 2–14 페이지.

클래스 시스템 :

PLT. PLT MzLib : 라이브러리 매뉴얼. 기술 보고서 ​​PLT-TR2006-4-v352, PLT Scheme Inc., 2006. http://www.plt-scheme.org/techreports/

Eli Barzilay. 사취. http://www.barzilay.org/Swindle .

구성 요소 시스템 :

Ryan Culpepper, Scott Owens 및 Matthew Flatt. 구성 요소 인터페이스의 구문 추상화. 생성 프로그래밍 및 구성 요소 엔지니어링에 관한 국제 컨퍼런스, 373–388, 2005 년

소프트웨어 계약 확인

Matthew Flatt 및 Matthias Felleisen. 단위 : 프로그래밍 언어 설계 및 구현에 관한 ACM SIGPLAN 컨퍼런스의 HOT 언어 용 멋진 모듈, 236–248, 1998 페이지

Oscar Waddell 및 R. Kent Dybvig. 구문 추상화의 범위 확장. 프로그래밍 언어 원리 심포지엄, 203–215, 199 페이지

파서 생성기

Scott Owens, Matthew Flatt, Olin Shivers 및 Benjamin McMullan. Scheme의 Lexer 및 파서 생성기. 체계 및 함수 프로그래밍 워크샵, 41–52 페이지, 2004 년 9 월.

엔지니어링 의미론을위한 도구 :

Matthias Felleisen, Robert Bruce Findler 및 Matthew Flatt. PLT Redex를 사용한 의미 공학. MIT Press, 2009 년 8 월.

컴파일러 변환의 사양 ​​:

Dipanwita Sarkar, Oscar Waddell 및 R. Kent Dybvig. 컴파일러 교육을위한 나노 패스 프레임 워크. Journal of Functional Programming, 15 (5) : 653–667, 2005 년 9 월. Educational Pearl.

새로운 형태의 실행

직렬화 가능한 연속이있는 서블릿 Greg Pettyjohn, John Clements, Joe Marshall, Shriram Krishnamurthi 및 Matthias Felleisen. 일반화 된 스택 검사의 연속. 함수형 프로그래밍에 관한 국제 회의, 216-227 페이지, 2005.

정리 증명 시스템

Sebastian Egner. Scheme의 열렬한 이해 : SRFI-42의 디자인. 계획 및 함수 프로그래밍 워크샵, 13–26 페이지, 2005 년 9 월.

유형이있는 기본 언어의 확장

Sam Tobin-Hochstadt 및 Matthias Felleisen. 형식화 된 체계의 설계 및 구현. 프로그래밍 언어의 원리에 관한 심포지엄, 페이지 395–406, 2008.

게으름

Eli Barzilay와 John Clements. 모든 노력이없는 게으름 : 가르치기 위해 게으르고 엄격한 언어를 결합합니다. 2005 년 9-13 페이지 교육의 기능적 및 선언적 프로그래밍에서.

기능적 반응성

Gregory H. Cooper와 Shriram Krishnamurthi. 값별 호출 언어에 동적 데이터 흐름을 포함합니다. 2006 년 유럽 프로그래밍 심포지엄에서


참고:

Ryan Culpepper의 논문 에서 수집


Culpepper & Felleisen, 매크로 강화, ICFP 2010

Culpepper, Tobin-Hochstadt 및 Felleisen, 고급 매크로 로지 및 유형화 된 계획의 구현, 계획 워크숍 2007

Flatt, Findler, Felleisen, Scheme with Classes, Mixins 및 Traits, APLAS 2006

Herman, Meunier, 부분 평가를 통한 임베디드 언어의 정적 분석 개선, ICFP 2004


Shivers, Carlstrom, Gasbichler & Sperber (1994 이상) Scsh 참조 설명서 .

매크로를 사용하여 미니 언어를 Scheme에 포함하는 좋은 예가 많이 있습니다. 암시 적으로 인수를 인용하는 매크로를 정의하는 기술을 소개했습니다. 프로세스 양식, 정규식 및 awk와 유사한 미니 언어의 사용을 살펴보십시오. Scsh는 매크로를 사용하기위한 시작점으로 제 권장 사항입니다.

Hilsdale & Friedman (2000) 연속 전달 스타일로 매크로 작성 .

연속 전달 스타일을 사용하여 약한 구문 규칙 매크로를 강력하게 만드는 방법을 보여줍니다. 많은 예를 제공합니다.

함께 작동하는 Flatt, Culpepper, Darais & Findler (제출 된) 매크로-컴파일 시간 바인딩, 부분 확장 및 정의 컨텍스트 .

Racket / PLT Scheme의 매크로 접근 방식에 대한 개요 및 의미를 제공합니다. 많은 예제는 아니지만 논문에 당신이 찾고있는 것이 있다고 생각합니다.


ReadScheme! ReadScheme에서 광범위한 참고 문헌을 확인하는 것을 잊지 마십시오.

http://library.readscheme.org/page3.html

내가 놓친 한 가지 예는 Scheme에 SQL 구문을 포함하는 것입니다. http://repository.readscheme.org/ftp/papers/sw2002/schemeunit-schemeql.pdf

매크로는 자동화 된 테스트를위한 지원을 작성하는데도 사용됩니다.


Scheme은 아니지만 매크로를 매우 광범위하게 사용하는 다소 유사한 Lisp 방언 : http://www.meta-alternative.net/mbase.html

There are macros implementing various kinds of pattern matching, list comprehensions, various parsers generators (including a PEG/Packrat implementation), embedded Prolog, ADT visitors inference (like scrap your boilerplate in Haskell), extensible syntax macros, Hindley-Milner type system, Scheme-like syntax macros, and many more. Parts of that functionality can be potentially ported to Scheme, other parts needs an extended macro system with explicit context.


I would add "The Scheme standard library itself" to the list. Look at the file boot-9.scm in the guile distribution. Many of the most commonly-used Scheme forms - case, and, etc. - are defined there as macros.


This isn't particularly precise in so far as it is spread out over a large number of very old publications most of which i've never read, but IIRC large chunks of the Common Lisp Object System and the Meta-Object Protocol*, can be; are; or were initially, built with of macros...

* Which compose IMHO by far the most advanced OO system programming has ever seen


Here's an example of a pretty awesome use of scheme macros to create efficient robotics systems written in scheme


Check one of my favorites implementations of a REST API: the Slack api client, that isn't written in Scheme but it is in Racket.

octotep/racket-slack-api

ReferenceURL : https://stackoverflow.com/questions/4548768/collection-of-great-applications-and-programs-using-macros

반응형