리스트의 재귀적 정의에 대해 소개하고, 이러한 재귀적 정의가 하스켈 문법에서 어떻게 표현되는지 소개합니다.
Here I introduce a recursive definition of a list, an abstract data type, and how this definition is implemented in Haskell syntax.
2. 리스트의 정의:
1. A list or sequence is an abstract data
type that represents an ordered sequence of
values, where the same value may occur
more than once. (Wikipedia)
2. 빈 리스트이거나 원소 하나와 리스트로 이루어진 자
료구조.
리스트란?
3. 빈 리스트이거나- []
원소 하나와 리스트로 이루어진 자료구조- 1, []
[1] –> 1, []
[1, 2] –> 1, [2] –> 1, [2, []]
[1, 2, 3] -> 1, [2, [3, []]]
이러한 재귀적인 구조가 하스켈 문법에서 (x:xs)로 표
현됨.
리스트란?
4. 리스트 내의 모든 원소를 합하는 함수 addAll을 만들어
보자.
addAll :: [Int] -> Int
addAll [] = 0
addAll (x:xs) = x + addAll xs
재귀적으로 생각하기