본문 바로가기

23년 1학기 학교공부/프로그래밍언어개론

[OCaml] Primitive types

728x90
반응형
SMALL

📁 프로그래밍 언어에서 type를 이해하는 방법

📌 타입(type)을 값(value)의 집합(set)으로 이해하기

 

예를 들면 다음과 같이 표현할 수 있다.

  • value 3은 int 타입이다. ➡ 3은 int 집합의 원소이다.
  • 변수 x는 char 타입이다. ➡ 변수 x는 char 집합의 원소를 담는 그릇이다.
  • 표현식 (x + 1.2)는 float 타입이다. ➡ 표현식 (x + 1.2)의 연산결과는 float 집합의 원소이다.
  • 함수 foo는 아무것도 반환하지 않는다. ➡ 함수 foo의 반환값은 공집합인 void의 원소이다.

 

📁 Unit 타입

📌 unit 타입은 "()" 하나로 구성된 singleton 집합이다.

 

unit 타입은 "아무것도 없음"을 나타내는 값이다.

OCaml의 모든 표현식은 반드시 값으로 계산되어야 하기 때문에, "()" 값을 통해 "없음"을 표현한다.

Python의 None, C/C++, Java의 void타입과 유사하다.

 

REPL에서 다음과 같이 표현된다.

# ();;
- : unit = ()

 

📁 int 타입

📌 int 타입은 모든 정수의 집합이다.

 

REPL에서 다음과 같이 표현된다.

# 2;;
- : int = 2;

 

int 타입 내장 연산자

Unary arithmetic(단항산술)로는 " - " (마이너스)가 있다.

Binary arithmetic(이진산술)로는 + (덧셈), - (뺄셈), * (곱셈), / (나눗셈), mod (나머지연산)이 있다.

Unary bitwise로는

 

 

📁 float 타입

📌 float 타입은 모든 실수의 집합이다.

 

REPL에서 다음과 같이 표현된다.

# 2.0;;
- : float = 2.

 

🔎 주의할 점.

OCaml에서는 int와 float 사이의 연산이 불가하므로, 반드시 타입 변환 후 연산해야한다.

# 2 + 3.0;;
Error: This expression has type float but an expression was expected of type int

# 2 + (int_of_float 3.0);;
- : int = 5

# (float_of_int 2) +. 3.0;;
- : float = 5.

 

📁 char 타입

📌 char 타입은 모든 문자의 집합이다.

 

Escape Sequence

앞에 ' / '(슬래쉬)를 붙여 프로그래밍 언어 특성상 표현할 수 없는 기능, 문자를 표현해준다.

  • \\ : backslash character
  • \' : single quote
  • \" : double quote
  • \t : tab
  • \r : carrage return
  • \n : line feed
  • \b : backspace
  • \space : space
  • \ddd : the character with ASCII code ddd in decimal
  • \xhh : the character with ASCII code hh in hexadecimal
  • \o000 : the character with ASCII code 000 in octal

 

📁 string 타입

📌 string타입은 모든 문자열의 집합이다.

 

String 타입 내장연산자

연산자 ^는 두 문자열을 붙이는 역할을 한다. 다음과 같이 사용할 수 있다.

"Hello ' ^ 'world""Hello world"

연산자 .[n]은 문자열에서 인덱스 n의 문자를 찾아 반환한다. 다음과 같이 사용할 수 있다.

"Hello".[1] ➡ 'e'

 

라이브러리 모듈 String

String.length는 문자열의 길이를 반환해준다.

String.length "Hello"5

Stirng.sub는 서브문자열을 반환해준다.

String.sub "Hello" 2 3"ll"

 

📁 bool 타입

📌 bool 타입은 true와 false로 이루어진 집합이다.

 

비교 연산자

모두 bool 값을 반환한다.

  • x = y : x와 y가 같다. (structural equality)
  • x <> y : x와 y가 다르다. (structural)
  • x == y : x와 y가 동일하다. (physical equality)
  • x != y : x와 y가 동일하지 않다. (physical)
  • x < y : x가 y보다 작다.
  • x <=y : x가 y보다 작거나 같다.
  • x > y : x가 y보다 크다.
  • x >=y : x가 y보다 크거나 같다.

REPL에서 다음과 같이 표현된다.

# 3 = 3;;
- : bool = true

# 3 == 3;;
- : bool = true

# [1;2] = [1;2];;
- : bool = true

# [1;2] == [1;2];;
- : bool = false

 

 

728x90
반응형
LIST