로봇 공장 설정을 관리해요.
로봇이 공장에서 나올 때는 이름이 없어요.
로봇을 처음 켜면 대문자 두 개 뒤에 숫자 세 개가 붙는 형식의 무작위 이름이 만들어져요. 예를 들어 RX837이나 BC811 같은 이름이에요.
가끔 로봇을 공장 초기 설정으로 되돌려야 할 때가 있는데, 그러면 로봇의 이름이 지워져요. 다음에 이름을 물어보면 그 로봇은 새로운 무작위 이름으로 답해요.
이름은 무작위여야 해요. 예측할 수 있는 순서를 따라서는 안 돼요. 무작위 이름을 쓰면 이름이 겹칠 위험이 있어요. 풀이는 모든 로봇이 고유한 이름을 갖도록 해야 해요.
이 연습 문제를 완료하려면 Robot 데이터 타입을 가변 변수로 만들고, RunState 데이터 타입도 만들어야 해요. 그리고 다음 함수들도 구현해야 해요:
initialStatemkRobotresetNamerobotName더미 데이터 선언과 타입 시그니처는 이미 준비되어 있지만, 함수를 정의하고 의미 있는 데이터 타입이나 뉴타입, 또는 타입 동의어를 만드는 일은 직접 해야 해요. 이 연습 문제는 상태를 모델링하기 위해 State 모나드를 사용해요. 더 구체적으로는 StateT 모나드 트랜스포머를 사용해 State 모나드와 IO 모나드를 결합해요. 모든 테스트는 initialState를 evalStateT에 전달하는 상태로 실행해요.
Exercism에 가입하고 Haskell 트랙을 연습 문제 107개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.