수학적 함수
같은 함수를 두 번 부르면 답도 늘 같을까?
화면을 누르면 다음 장으로 넘어갑니다
수학적 함수
입력마다 출력 하나가 정해져 있습니다
수학적 함수는 정의역(domain set, 입력이 되는 값의 모임)의 원소를 공역(range set, 출력이 나오는 값의 모임)의 원소에 대응시킵니다. 세제곱 함수는 2를 언제나 8에 대응시킵니다.
1, 2, 3은 예시로 고른 입력입니다.
늘 같은 답
몇 번을 불러도 같은 값입니다
6강에서 본 부작용은 함수가 자기 밖의 변수를 바꾸는 것이었습니다. 수학적 함수에는 부작용이 없습니다. 그래서 같은 입력에는 늘 같은 출력이 나옵니다.
오른쪽 next는 예시 함수입니다. 2에 밖의 칸 n을 더해 돌려주고 n을 1 늘립니다.
참조 투명성
그래서 식을 값으로 바꿔 써도 됩니다
같은 매개변수(함수가 받는 값)를 주면 함수의 평가 결과가 늘 같은 성질이 참조 투명성(referential transparency)입니다. 그래서 6강에서 본 대로, 값이 같은 두 식을 서로 바꿔 써도 동작이 변하지 않습니다.
평가는 식의 값을 구하는 일입니다.
람다 식
함수를 이름 없이 적는 표기
람다 식(lambda expression)은 함수의 매개변수와 대응 규칙을 적는 표기입니다. λ(x) x × x × x는 세제곱 함수입니다. 이름이 없어도 값을 넣어 계산할 수 있습니다.
λ는 그리스 글자 람다입니다. 넣은 값 2는 예시입니다.
고차 함수
함수가 함수를 받고, 함수를 내놓습니다
함수를 매개변수로 받거나, 함수를 결과로 돌려주거나, 둘 다 하는 함수가 고차 함수(higher-order function)입니다. 함수형 형식(functional form)이라고도 합니다.
이 강의의 그림에서 청록색 테두리는 함수입니다.
변수가 없으면
반복문 대신 재귀를 씁니다
명령형 언어는 결과를 변수에 담아 두고 씁니다. 값이 바뀌는 순서를 따라가야 해서, 이 강의가 따르는 교재는 변수 관리를 복잡함의 큰 원인으로 봅니다. 함수형 언어는 변수 없이, 되풀이를 재귀(함수가 자기 자신을 다시 부르는 것)로 합니다.
fact는 팩토리얼(1부터 그 수까지의 곱)입니다.
다음 편