Nirum.Targets.Python에서 Python 코드를 생성할 때, 지금은 단순히 Text를 서로 이어붙이는 식으로 구현되어 있습니다. 이를 Text.PrettyPrint로 교체하면 몇 가지 이점을 얻을 수 있습니다:
Nirum.Targets.Python의 최종 목표는 코드 생성 결과를 그대로 파일 스트림에 출력하는 것입니다. 하지만 지금 구조상으로는 매 단계마다 Text를 조합해서 하나의 거대한 텍스트 덩어리를 만드는데, 굳이 그럴 필요 없이 lazy evaluation을 활용해서 중간 결과물을 생성하는 연산을 아껴볼 수 있습니다.
들여쓰기가 포함된 복잡한 코드 생성을 여러 함수로 나눌 때, 지금까지는 각 함수에서 들여쓰기에 대한 고려를 따로 해야 했습니다. 이를 nest 등 Doc을 조합하는 방식으로 바꿔서 좀 더 작은 단위로 함수를 나누는 걸 용이하게 하고 코드를 좀 더 쉽게 만들 수 있습니다.
Nirum.Targets.Python
에서 Python 코드를 생성할 때, 지금은 단순히Text
를 서로 이어붙이는 식으로 구현되어 있습니다. 이를 Text.PrettyPrint로 교체하면 몇 가지 이점을 얻을 수 있습니다:Nirum.Targets.Python
의 최종 목표는 코드 생성 결과를 그대로 파일 스트림에 출력하는 것입니다. 하지만 지금 구조상으로는 매 단계마다Text
를 조합해서 하나의 거대한 텍스트 덩어리를 만드는데, 굳이 그럴 필요 없이 lazy evaluation을 활용해서 중간 결과물을 생성하는 연산을 아껴볼 수 있습니다.Doc
을 조합하는 방식으로 바꿔서 좀 더 작은 단위로 함수를 나누는 걸 용이하게 하고 코드를 좀 더 쉽게 만들 수 있습니다.