C언어는 배열 인덱스를 0부터 시작하는데
이유는 인덱스가 배열 포인터와의 오프셋과 일치하기 위함이다.
다익스트라도 0부터 인덱스 하는게 좋다고 했어.
http://lambda-the-ultimate.org/node/1950
하지만 이 방식이 함수형 언어에까지 그대로 전해져야 하는 이유는 뭐지?
오프셋이나 메모리 구조 그런거 다 제쳐두고, 수학적으로만 생각할 때
첫번째 항이 1이 아닌 0으로 접근해야 한다는 것은 상당히 이질적이라고 생각함.
0은 공집합
하스켈에서 가장 아쉬운 부분이 이거. 왜 리스트의 첫번째 원소를 0으로 뽑아야 하는지. n번째 원소를 n-1로 뽑아야 하는지..
옛날에 코세형한테도 물어봤지만, 저 위에처럼 오프셋 얘기만 하더라고.
형들은 인덱스 0부터 시작이 좋아, 1부터 시작이 좋아?
그 이유는?
함수형에서도 인덱스를 0부터 시작해야 하는 이유는?
자연수에 0이 포함될 수도 있으니까 부자연스러울 이유는 없다고 보는데
내가 배울땐 프로그래밍을 할 땐 거진 다 0부터 시작하고 이론으로 알고리즘이나 자료구조를 배울 땐 1부터 시작했는데... 더 이야기하고 싶어도 함수형언어가 뭔지 잘몰라서... 제성합니당
나도 자연수에 0이 포함되야 한다고 보는데, 그 0의 의미는 0이잖아. 존재하지 않음의 의미. 첫번째 원소는 이미 존재함을 의미하고 그것을 접근하려면 1이라는 인덱스로 표현되는게 옳지 않아?
자연수에 0이 없다는건 선입견임.. 고교 교과서에서 N = {1, 2, 3, ...}으로 정의하기 때문에 0에 거부감이 들 수도 있는데 꽤 많은 해석 대수쪽 저자들이 N = {0, 1, 2, 3, ...}으로 정의하고 기존의 자연수라고 부르던 집합은 Z+ = {x | x > 0, x ∈ Z}로 정의한다
1부터 시작하는게 직관적으로 보기 쉬운건 사실아니냐 우리가 0으로 시작하는 배열로 프로그래밍 하는데 익숙해져 있긴 하지만
보통 고등 수학에서 수열 배울때도 0부터, 고등 물리에도 시작지점은 0부터.. 그래서 그런지 0이 더 익숙하네.. 다른 이유는 모르고 그냥 익숙해서 ㅋ?
자연수를 0도 포함하게 해야 덧셈에 관해 monoid 구조를 갖으니 다루기 더 편함. 그거 아니어도 대학 수학교재에선 거의다 인덱스 집합에 0도 포함해서 다룰텐데 뭐가 이상한건지 몰겠다.