프로그램을 짜다보면 비슷한 작업을 반복하게 된다. 이런 작업들을 하나의 단위로 묶어놓은 것이 함수(function)다. 이미 앞에서 document.write를 비롯해 몇 가지 함수들을 사용한 바 있다. 여기서는 함수를 직접 정의하는 방법을 알아보자.
function sum( from, to ){
result = 0
for( i = from; i <= to; i++){
result += i
}
return result
}
z = sum( 1, 10 )
document.write(z)
Haskell에서는 다음과 같은 방식으로 함수를 정의하는 것이 가능하다.
inc = (1+)
이것이 가능한 이유는 + 함수가 보통 다른 언어에서처럼 "두 개의 수 x, y를 받아 하나의 수 z를 반환하는 함수 f: (x,y) → z"가 아니라 "하나의 수 x를 받아 '하나의 수 y를 받아 하나의 수 z를 반환하는 함수'를 반환하는 함수 f: x → (y → z)"이기 때문이다. 함수를 이런 식으로 정의하는 방법을 커링(currying), 앞의 방식은 언커링(uncurrying)이라고 한다.
여기가 Ocaml Tutorial 사이트입니다.
http://www.ocaml-tutorial.org/ko
우리나라버젼도 곧 나올것입니다.
그전에 제가 할일이 많아 졌군요! 하핫!!
아무튼, 많은 관심 부탁드리고, 광열씨한테
압박좀 넣어주세요! 번역이 많이 늦어지고 있네요! ㅋㅋ
같은 작업을 반복해야할 때 반복문을 사용한다. 반복문의 기본은 조건문과 비슷하다.
while은 if의 반복문 버전이다. if는 조건이 참이면 중괄호 안의 내용을 실행시키지만 while은 조건이 참인 동안 반복해서 실행시킨다.
i = 0
while( i < 10 ){
document.write( i + "<br>" )
i++
}
위의 예제는 0부터 9까지 화면에 출력한다. i = 0으로 시작해서 i가 10보다 작으므로 중괄호 안의 내용을 실행한다. i++로 i에 1을 더하고 i를 출력한다. 다시 조건을 확인하면 여전히 10보다 작으므로 이 과정을 반복한다. i가 10이 되면 조건을 만족하지 않으므로 반복을 중단한다.
참고로 i + "
상황에 따라 프로그램이 다르게 작동해야할 때가 있다. 주어진 조건의 참, 거짓에 따라 다른 코드를 처리하는 것을 조건문이라고 한다.
num = prompt("좋아하는 숫자를 하나 넣어주세요")
if( num % 2 == 0 )
{
document.write("짝수")
}
else
{
document.write("홀수")
}
prompt는 작은 창을 띄워서 사용자의 입력을 받는다.

사용자의 입력은 num 변수에 저장된다. 위의 if문은 만약 num을 2로 나눈 나머지가 0이면 짝수, 아니면 홀수를 출력한다. 위에서 ==는 '같다'라는 조건을 확인한다. 변수에 값을 대입하는 =와 혼동하지 말 것.
a = 1 document.write( a + 2 )
위의 자바스크립트 코드는 HTML 문서에 "3"이라는 내용을 추가한다. 첫 줄에서 a는 변수(variable)이다. 컴퓨터에서 정보를 파일에 담아 저장하듯이 프로그래밍에서 값은 변수에 담아서 다룬다. = 표시는 "같다"라는 뜻이 아니라 왼쪽의 변수에 오른쪽의 값을 담으라는 뜻이다. 즉, a = 1은 a에 1을 담으라는 뜻이다.
document.write는 앞에서 설명했듯이 문서에 내용을 추가하는 함수이다. a + 2를 하면 글자 그대로 a에 담겨있는 1과 2를 더한다. 그 결과는 3이다.
스킴을 비롯한 리습 계열 언어들은 매크로를 이용하여 문법을 손쉽게 확장할 수 있다. 스킴에서 매크로를 정의하는 방법은 define-syntax라는 표현을 사용한다.
명령형 프로그래밍에서 나왔던 when은 if로 아래처럼 고쳐서 쓸 수 있다.
(when #t (display "안녕") (newline)) (if #t (begin (display "안녕") (newline)))
새로운 문법을 정의하는 방법은 기존 문법으로 어떻게 표현되는 지 나타내는 것이다. when의 경우에는 아래와 같다.
자바스크립트에서는 함수를 값으로 주고 받을 수 있다. 아래 예는 함수 add1을 inc에 할당한 것이다. inc는 다른 함수처럼 사용할 수 있다.
function add1(x){ return x+1 }
inc = add1
inc(3) // 4
함수를 변수에 할당할 수 있기 때문에 함수를 다른 함수의 매개변수로 넘겨줄 수도 있다. 아래 apply 함수는 함수 f와 값 value를 받아서 value에 f를 적용시키고 그 결과를 돌려준다.
function apply(f, value){
return f(value)
}
아래 예는 하스켈의 map 함수를 자바스크립트로 구현한 것이다. map 함수는 함수 func와 배열 array를 받아서 array의 각 원소에 func를 적용한 결과를 배열로 돌려준다. 마지막에서 map(inc, [1,2,3,4,5])를 하면 1,2,3.. 각각에 inc 함수를 적용하여 [2,3,4,5,6]이 된다.
다음 내용을 문서 편집기로 작성해서 hello.html로 저장하자.
<html>
<head>
<script type="text/javascript">
<!--
document.write("hello, world");
//-->
</script>
</head>
<body>
</body>
</html>
웹 브라우저로 hello.html을 열어보면 hello, world라는 말이 출력되어 있을 것이다. 이 예제를 살펴보면서 자바스크립트의 기본 원리에 대해 알아보자.
document.write("hello, world");
예제에서 자바스크립트 코드는 단 한 줄 뿐이다. document는 현재 웹 페이지의 문서를 가리킨다. 문서처럼 프로그램의 대상이 되는 것들을 객체(object)라고 한다.
자바스크립트(JavaScript)는 주로 웹 브라우저에서 실행되는 스크립트 언어이다. 프로그래밍 언어로서는 프로토타입 기반 객체 지향, 함수형, 동적 타이핑 등의 특징을 가지고 있다.