Common Lisp representer 정규화

Common Lisp representer가 풀이에 적용하는 정규화를 개괄적으로 살펴봐요.


representer는 제출물을 읽을 때 read를 사용하고 representation을 쓸 때는 write를 사용하며, 그 밖에 몇 가지 정규화도 추가로 적용해요. 모든 제출물에는 다음과 같은 정규화가 적용돼요.

주석 제거

read로 제출물을 읽기 때문에 주석은 제거돼요.

문서 문자열 제거

문서 문자열에 들어 있을 수 있는 이름들을 정규화하는 대신, 문자열 자체를 제거해요. 다만 문서 문자열이 있었는지 없었는지는 representation에 기록돼요.

대소문자 정규화

read로 제출물을 읽기 때문에 모든 심볼은 대문자로 정규화돼요.

텍스트 서식 정규화

representation은 write로 쓰기 때문에 들여쓰기, 공백, 빈 줄에 남겨 둔 닫는 괄호 같은 제출물 서식의 세부 사항은 representation에 남지 않아요.

심볼 이름 정규화

함수, 변수, 매크로 이름과 패키지 같은 심볼은 gensyms로 매핑되어 representation에 사용돼요.