매크로를 사용한 훌륭한 응용 프로그램 및 프로그램 모음
저는 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.
ReferenceURL : https://stackoverflow.com/questions/4548768/collection-of-great-applications-and-programs-using-macros
'program story' 카테고리의 다른 글
서버에서 HEIF (.heic)를 JPEG로 변환 하시겠습니까? (0) | 2020.12.26 |
---|---|
C # 4.0의 명명 된 인수 및 제네릭 형식 유추 (0) | 2020.12.26 |
CQRS : 명령 반환 값 (0) | 2020.12.26 |
C ++ 로깅 프레임 워크 제안 (0) | 2020.12.26 |
.NET Webbrowser 컨트롤에서 메모리 누수를 피하는 방법은 무엇입니까? (0) | 2020.12.26 |