[함수형언어] 2주차 수업 내용 정리
04.18 2주차 수업 내용 정리
비교 연산자, 논리 연산자
- bool 값은 직접 사용하는 것보다, 조건문으로 사용하거나 실행의 결과로써 받는 일이 많다.
- 같은 자료형의 데이터라면 거의 모든 값을 비교 가능.
>=
,<=
,>
,<
,=
,<>
등. - 논리 연산은
&&
,||
,not
으로 이루어진다. - 문자열은 아스키코드 등록 순서에 따라 비교된다.
조건문
if 조건 then 식 1 else 식 2
: 조건이 참이면 식 1을 실행, 아니라면 식 2를 실행한다.
(* x의 절댓값을 출력하는 함수 *)
(* - 연산자를 이항연산뿐 아니라 단항연산에도 사용할 수 있음 *)
let abs_value x = if x > 0.0 then x else -. x
- OCaml 조건문의 규칙
- 조건 부분은 무조건 bool 자료형이어야 한다. 타 언어에서는 0을 조건으로 사용하기도 하나, OCaml은 불가능.
- 식 1과 식 2는 반드시 같은 자료형을 가져야 한다. 조건문의 결과가 또 다른 프로그램에 가져다 쓰일 수 있기 때문이다.
디자인 레시피
- 함수를 작성할 때의 지침이 되는 것.
- 목적: 무엇을 받아 무엇을 돌려 줄 것인가? 어떤 자료형을 이용할 것인가?
예시: chocolate: int -> int
- 예시: 구체적 입력 예시를 복수 개 들 것. 실제 입력과 그에 따른 출력을 복수 개 저장해 테스트 프로그램으로 삼음.
예시: let test1 = (chocolate 100 = 0)
- 프로그램의 본체를 작성
- 실제 테스트
- 목적: 무엇을 받아 무엇을 돌려 줄 것인가? 어떤 자료형을 이용할 것인가?
함수와 조건문
- 함수와 조건문은 여러 줄에 걸쳐 작성할 수 있다.
let kyuyo x =
if x < 30 then kihonkyu + x * jikyu
else kihonkyu + x * yugu_jikyu
(* 위 코드에서 kihonkyu + x 부분이 중복되므로 아래와 같이 작성하면 효율적 *)
let kyuyo x =
kihonkyu + x * (if x < 30 then jikyu else yugu_jikyu)
- 위와 같이, OCaml에서는 if문을 다른 식 안에 넣어 사용할 수 있다.
진위값을 반환하는 함수
- 아래는 현재 기온 t를 int 자료형으로 받고, 그 값이 15 이상 25 이하라면 “快適”을, 이외에는 “普通”을 반환하는 함수 kion이다.
let kion t = if 15 <= t && t <= 25 then "快適" else "普通"
- 여기서 t가 15 이상 25 이하인지 체크하는 함수 kaiteki를 분리해 따로 작성한다.
let kaiteki t = 15 <= t && t <= 25
- 함수 kion 내에서 다른 함수 kaiteki를 호출해 코드를 간결하게 작성할 수 있다.
let kion t = if kaiteki t then "快適" else "普通"
조건 분기의 실행 과정
- 조건 분기 시, 실행은 크게 조건 부분의 실행과 then 또는 else 부분의 선택으로 이루어진다.
x
의 값이 31일 때let kyuyo x = kihonkyu + x * (if x < 30 then jikyu else yugu_jikyu)
의 실행 과정- 함수의 내용 전개와 인수의 치환:
x
를 31로 대체한다. - 차례로, 변수
kihonkyu
를 만나면 이를 100으로 대체한다. - if문의 조건을 먼저 실행한다.
- 조건부의 결과에 따라 식 1, 식 2 중 하나를 실행한다.
- 함수의 내용 전개와 인수의 치환: