제가 전공자는 아니라서 이게 실용적으로 보일지는 모르겠네요.
5 Likes
재밌게 잘 봤습니다.
읽다 보니, C# 의 record 에서 느꼈던 아쉬움이 생각이 나더군요.
아쉬운 점은, record 가 제공하는 풍부한 기능은 주 생성자의 매개 변수에 기반에 하는데, 접근 제한자가 public으로 고정되어, 생성된 인스턴스의 상태를 보장하기가 까다롭다는 점입니다.
예를 들어, Record 형식을 정의할 때,
record Record(int N, string S);
이 인스턴스의 상태에 아래의 조건을 강제하는 게 불가능합니다.
- N 은 100 보다 크거나 같아야 함.
- S 는 100 글자 이하여야 함.
생각해 본 해결책은 주 생성자의 접근제한자를 설정할 수 있게 만드는 것입니다.
record Record protected (int N, string S)
{
public static Record Default => new(100, "");
public static Record New(int n, string s) =>
// 검증
n < 100 ? Default
: s.Length > 100 ? new(n, s[..100])
: new(n, s);
}
1 Like
DSL의 마지막은 언어를 만드는거 같은데
AI 덕분에 현업에서도 가능할 수도 있겠다는 생각이 드는군요.
2 Likes
며칠동안 문서를 열심히 수정해봤는데 좀 현타가 오네요. 여러가지 현실적인 문제로 실제로 만들지도 않을 물건을 시간 낭비하면서 작성할 이유가 딱히 없었는데…