단순 출력은 io:format 함수를 사용한다. ~n은 한줄을 의미한다. 만약 특정 상수를 출력하고 싶다면 ~w를 추가한다.


1> io:format("hello world~n", []).

hello world

ok

2> io:format("오 한글 되나~n", []).

오 한글 되나

ok


3>A=1.1.


4> io:format("~w~n", [A]).

1.1

ok




튜플을 ordered immutable list 정도의 타입이다. { }으로 표현한다.


1> POINT = {50, 30}

1> .

{50,30}

2> {X, Y} = POINT.

{50,30}

3> X.

50

4> Y.

30


튜플 내부의 타입은 튜플과 아무 상관없이 잘 사용할 수 있다.



5> MEMBER = {'samuel', 15, 'sales'}.

{samuel,15,sales}

6> MEMBER.

{samuel,15,sales}



튜플끼리 비교가 가능하다.


9> {50, 30} == {30, 50}.

false

10> {50, 30} == {50, 30}.

true

11> {50, 30} =:= {30, 50}.

false

12> {50, 30} =:= {50, 30}.

true



리스트는 아무 것이나 넣을 수 있으며, 리스트끼리 비교할 수 있다. [ ]로 표현한다.


13> [ 10, 20, 30 , 'abc', 1.1, atom].

[10,20,30,abc,1.1,atom]

14> [ 10, 20, 30 , 'abc', 1.1, atom] == [ 10, 20, 30 , 'abc', 1.1, atom].

true

15> [ 10, 20, 30 , 'abc', 1.1, atom] == [ 10, 20, 30 , 'abc', 1.1, atom1].

false



문자가 없으면, ASCII 묶음이 된다.


21> [48, 49, 50, 51, 52, 53, 54, 55, 56, 57].

"0123456789"



리스트간의 연산을 할 수 있다. 리스트는 리스트와의 연산을 할 수 있으며, 연산자는 정해져 있다. ++, --를 사용한 예제이다.


22> [1,2,3] + 4.

** exception error: an error occurred when evaluating an arithmetic expression

     in operator  +/2

        called as [1,2,3] + 4

23> [1,2,3] + [4].

** exception error: an error occurred when evaluating an arithmetic expression

     in operator  +/2

        called as [1,2,3] + [4]

24> [1,2,3] ++ [4].

[1,2,3,4]

25> [1,2,3] -- [3].

[1,2]



아주 특이한 것은 ++, -- 리스트 연산의 순서는 오른쪽에서 왼쪽이다. 아래 예를 들면, [3,1] -- [3]의 결과를 먼저 진행한다. [1]만 남는다. [1,2,3] -- [1] 연산의 결과를 출력한다.


27> [1,2,3] -- [3, 1] -- [3].

[2,3]


리스트를  concatenation을 할 수 있다.  파이프(|)을 이용하면 하나로 merge한다. 만약 쉼표(,)를 사용하면 리스트 안에 리스트를 생성한다.


29> List = [1,2,3].

[1,2,3]

30> [0,List].

[0,[1,2,3]]

31> [0|List].

[0,1,2,3]




얼랭만의 특징인데, head와 tail 명령어다. head 명령어는 hd로 쓰이며, 맨 앞 하나만 가진다. tail 명령은 head 1개를 제외한 나머지이다.


33> hd([1,2,3]).

1

34> tl([1,2,3]).

[2,3]







Posted by '김용환'
,