[Ocaml] List

정민경·2023년 2월 12일
2

ocaml

목록 보기
1/6
post-thumbnail

- list 만드는 방법

  • [ ] : 빈 리스트 (nil)
  • :: ( 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 )
    • 문제가 충분히 작지 않다면,
      1. 문제를 동일한 구조를 가지는 작은 문제들로 쪼갠다.
      2. 쪼개진 문제들을 재귀적으로 푼다.
      3. 결과를 합쳐서 원래 문제의 답을 구한다.
  • 리스트의 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 >

- 명령형 vs. 함수형 프로그래밍

  • 함수형 프로그래밍

    • 높은 추상화 수준에서 프로그래밍
    • 견고한 소프트웨어를 작성하기 쉬움
    • 소프트웨어의 실행 성질을 분석하기 쉬움.
  • 명령형 프로그래밍

    • 낮은 추상화 수준에서 프로그래밍
    • 견고한 소프트웨어를 작성하기 어려움
    • 소프트웨어의 실행 성질을 분석하기 어려움

- 참고 자료

0개의 댓글