:: ( cons ) : 리스트 앞에 하나의 원소 추가
- 'a' -> 'a' list -> 'a' list = < fun >
@ ( append ) : 두 리스트 이어붙이기
- 'a' list -> 'a' list -> 'a' list = < fun >
operator 를 괄호로 묶어주면 함수처럼 쓸 수 있음.
- (@) : 'a' list -> 'a' list -> 'a' list = < fun >
- (+) : int -> int -> int =< fun >
< 재귀적으로 문제 풀기 >
- 주어진 문제의 크기가 충분히 작다면 직접 푼다. ( basecase )
- 문제가 충분히 작지 않다면,
- 문제를 동일한 구조를 가지는 작은 문제들로 쪼갠다.
- 쪼개진 문제들을 재귀적으로 푼다.
- 결과를 합쳐서 원래 문제의 답을 구한다.
리스트의 length 구하는 함수
- length : 'a' list -> int = < fun >
append 함수
- append : 'a' list -> 'a' list -> 'a' list = < fun >
리스트 뒤집기 ( 시간복잡도 : n² )
- reverse : 'a' list -> 'a' list = < fun >
n 번째 원소 찾기
- nth : 'a' list -> int -> 'a' = < fun >
첫번째로 등장하는 원소 지우기
- remove_first : 'a' -> 'a' list -> 'a' list = < fun >
정렬된 리스트에 원소 추가
- insert : 'a' -> 'a' list -> 'a' list = < fun >
삽입 정렬
- sort : 'a' list -> 'a' list = < fun >
함수형 프로그래밍
- 높은 추상화 수준에서 프로그래밍
- 견고한 소프트웨어를 작성하기 쉬움
- 소프트웨어의 실행 성질을 분석하기 쉬움.
명령형 프로그래밍
- 낮은 추상화 수준에서 프로그래밍
- 견고한 소프트웨어를 작성하기 어려움
- 소프트웨어의 실행 성질을 분석하기 어려움