트랙
/
Haskell
Haskell
/
연습 문제
/
로봇 이름
로봇 이름

로봇 이름

보통

지침

로봇 공장 설정을 관리해요.

로봇이 공장에서 나올 때는 이름이 없어요.

로봇을 처음 켜면 대문자 두 개 뒤에 숫자 세 개가 붙는 형식의 무작위 이름이 만들어져요. 예를 들어 RX837이나 BC811 같은 이름이에요.

가끔 로봇을 공장 초기 설정으로 되돌려야 할 때가 있는데, 그러면 로봇의 이름이 지워져요. 다음에 이름을 물어보면 그 로봇은 새로운 무작위 이름으로 답해요.

이름은 무작위여야 해요. 예측할 수 있는 순서를 따라서는 안 돼요. 무작위 이름을 쓰면 이름이 겹칠 위험이 있어요. 풀이는 모든 로봇이 고유한 이름을 갖도록 해야 해요.

힌트

이 연습 문제를 완료하려면 Robot 데이터 타입을 가변 변수로 만들고, RunState 데이터 타입도 만들어야 해요. 그리고 다음 함수들도 구현해야 해요:

  • initialState
  • mkRobot
  • resetName
  • robotName

더미 데이터 선언과 타입 시그니처는 이미 준비되어 있지만, 함수를 정의하고 의미 있는 데이터 타입이나 뉴타입, 또는 타입 동의어를 만드는 일은 직접 해야 해요. 이 연습 문제는 상태를 모델링하기 위해 State 모나드를 사용해요. 더 구체적으로는 StateT 모나드 트랜스포머를 사용해 State 모나드와 IO 모나드를 결합해요. 모든 테스트는 initialState를 evalStateT에 전달하는 상태로 실행해요.


출처

gSchool에서 Paul Blackwell과 함께한 디버깅 세션.
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Haskell Exercism

로봇 이름 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Haskell 트랙을 연습 문제 107개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.