|
|
Contents
![[-] [-]](/moniwiki/imgs/plugin/arrup.png) ![[+] [+]](/moniwiki/imgs/plugin/arrdown.png)
- 1 함수형 언어
- 2 일반적인 특징
- 3 변수의 특징
- 4 Atom
- 5 Tuple
- 6 List
- 7 문자열
- 8 fun
1 함수형 언어 #
- 기본 모델
- 수학 함수에 기반
- 함수를 값에 적용(application)
- 매개변수 전달(parameter passing)
- 반환 값(return value)
- 특징
- 변수 및 배정문이 없음
- 자기호출(recursion)에 의한 반복
- 루프 같은 반복문은 없음
2 일반적인 특징 #
- 루프 제어문이 없다.
- 함수형 언어이기 때문에 모든 식은 값을 가져야 한다.
- 데이터형에 대한 선언이 없다. (알아서 한다.)
- = 는 할당문이 아니다. (Lhs = Rhs의 뜻: 오른쪽을 계산한 다음 왼쪽에 있는 패턴과 매치하라는 뜻)
- 엄청나게 큰 숫자도 쉽게 계산할 수 있다.
- Garbage Collector가 있다.
3 변수의 특징 #
- 변수는 대문자로 시작해야 한다.
- 변수는 초기값이 없을 경우에만 값을 삽입(bound)할 수 있다. 값이 없는 변수는 Unbound 된 변수라고 한다.
- 기본적으로 한 번 Bound된 변수는 다시 값을 할당할 수 없다.
- 변수는 어떤 값에 대한 참조일 뿐이다. 그러므로 Atom, Tuple, Function과 같은 것들도 Bound 될 수 있다.
4 Atom #
- 수치가 아닌 상이한 불변 값을 나타내는데 사용한다. (C의 열거형쯤 된다.)
- 전역(Globle)이다.
- 소문자로 시작해야 한다.
- 대문자로 시작하려면 작음 따옴표(')를 써야 한다. 'a'와 a는 같다. 하지만 A와 'A'는 다르다. A는 변수로 인식하고 'A'는 Atom으로 인식한다.
5 Tuple #
- Tuple은 C언어의 구조체쯤 된다.
- 보통 P = {point, 4, 5} 와 같이 표현된다.
- 역시 값이 이미 바운드 된 상태이므로 변경 불가능하다.
6 List #
- 개수가 가변적인 데이터(erlang 데이터는 무엇이든)를 저장할 때 사용
- 변경 가능
- 대괄호([])로 둘러싸며, 요소들은 쉼표(,)로 구분
- 리스트 용어
- 헤드(head): 리스트의 첫 번째 요소
- 꼬리(tail): 헤드를 제외한 나머지 부분
- 대부분의 리스트 처리는 헤드를 처리하고, 그 다음 꼬리를 처리하는 식임.
- []는 빈 리스트
- [H|T]도 리스트, 세로막대(|)는 헤드와 꼬리를 구분함.
- [H1|T1] = L. 과 같이 패턴매칭으로 데이터를 추출함.
- List-at-a-time: 함수를 한 번 호출하여 리스트 전체에 대한 무언가를 수행하는 연산
- 사이 추가 연산자(infix append operator)- L1=[1,2,3]이고, L2=[4,5,6] 일때 L1++L2와 같이 하면 [1,2,3,4,5,6]과 같이 된다.
7 문자열 #
- 정수 리스트다.
- 큰 따옴표(")로 둘러싼다.
- 출력은 터미널 로케일 및 문자 코드 설정에 따른다.
- 요즘(2014-04)은 erl +pc unicode 과 같이 입력하고 erl 쉘에 들어간다.
참고
8 fun #
- 익명함수
- fun을 함수의 매개변수로 사용할 수 있고, 함수(or fun)가 fun을 반환할 수 있다.
|