목표 : 아래 표현을 이해하기
let _ = reachable_locs := [] in
let _ = loc_id := !loc_id + 1 in
OCaml에서는 평소에 포인터를 쓰지 않고도 프로그래밍을 할 수 있다.
명시적 포인터가 필요한 경우는 드물다.
예를 들면, 고전적인 명령형 언어로 설명된 알고리즘을 OCaml로 번역할 때는(지금 내가 하려는 것)
명시적인 포인터가 필요하다.
OCaml의 ref type
ref 참조를 이용해서 reference call을 할 수 있다.
<1> 초기화
ref true
ref 0
ref "foo"
let eof = ref false in ...
<2> 대입
eof := true
ref된 값을 업데이트하기 위해 := 연산자를 활용한다.
!eof = false
!(ref false) = false
와 같은 표현은
할당하는 것이 아니라, 값이 같은지를 확인하는 문장이다.
<3> 값
!eof
!n
예제
let eof = ref false in
while not !eof do
let len = input chan buffer 0 size in
if len > 0 then
print_string (String.sub buffer 0 len)
else
eof := true
done
'Computer Science > 프로그래밍언어' 카테고리의 다른 글
Garbage Collection의 정의와 알고리즘 (0) | 2022.05.10 |
---|---|
컴퓨터과학이 여는 세계(이광근, 2015) 노트 (0) | 2022.04.28 |
람다 대수 Lambda Calculus란 무엇인가? (ft. Church Encodings) (0) | 2022.04.20 |
Unit Test | 유닛 테스트를 통해 신뢰할 수 있는 프로그램 만들기 (0) | 2022.04.11 |
Wiki | Unit type (0) | 2022.04.03 |