연습 문제 2.2: 함수형 스택

    이 연습 문제에서는 원소를 내부에 저장하되, 후입선출 순서로 꺼낼 수 있는 데이터 타입인 스택을 작성해보자.

    함수형 원칙에 따라 스택은 불변이어야 한다. 즉, 원소를 푸시하면 새 스택이 반환되고 팝하면 팝한 원소와 새 스택 인스턴스가 들어 있는 튜플(쌍)이 반환된다. 다음 예제 코드를 보라. 이 코드는 여러분의 FunStack 구현과 함께 제대로 작동해야 한다.

    @Test
    fun `push into the stack`(){
        val stack1 = FunStack<Char>()
        val stack2 = stack1.push('A')
        expectThat(stack1.size()).isEqualTo(0)
        expectThat(stack2.size()).isEqualTo(1)
    }
    
    @Test
    fun `push push pop`(){
        val (b, stack) = FunStack<Char>()
            .push('A')
            .push('B')
            .pop()
        expectThat(stack.size()).isEqualTo(1)
        expectThat(b).isEqualTo('B')
    }
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.