표준 ML
표준 ML(Standard ML, SML)은 정적 정형 및 타입 추론을 지원하는 범용 모듈성, 함수형 프로그래밍 언어. 컴파일러 개발과 프로그래밍 언어 연구, 자동 정리 증명의 개발에 사용된다. SML은 계산가능한 함수( Logic for Computable Functions )의 정리 증명 프로젝트에서 사용되는 프로그래밍 언어인 ML의 현대적 방언이다. The Definition of Standard ML에서 타입 규칙과 조작적 의미론(operational semantics)을 포함하는 표준이 있다는 점에서 널리 사용되는 언어들 사이에서 두드러진다.[4] 언어SML은 순수 함수형 프로그래밍이 아니다. SML로 작성된 프로그램은 구문이나 명령어가 아니라 평가되는 표현식으로 구성되지만, 일부 표현식은 무의미한 "단위"값을 반환하고 부작용을 갖는다. 다른 함수형 프로그래밍처럼 SML의 핵심은 함수다. 예를 들어 계승 함수는 아래과 같이 표현된다. fun factorial n =
if n = 0 then 1 else n * factorial (n - 1)
SML 컴파일러는 함수의 정적 타입 fun factorial 0 = 1
| factorial n = n * factorial (n - 1)
case 문으로 아래와 같이 작성할 수도 있다. val rec factorial =
fn n => case n of 0 => 1
| n => n * factorial (n - 1)
반복문으로는 fun factorialIT value =
let
val flag = ref value and i = ref 1
in
while !flag <> 0 do (
i := !i * !flag;
flag := !flag - 1
);
!i
end;
익명 함수로는 val rec factorial = fn 0 => 1 | n => n * factorial(n - 1)
여기서 fun factorial n = let
fun lp (0, acc) = acc
| lp (m, acc) = lp (m-1, m*acc)
in
lp (n, 1)
end
같이 보기각주
외부 링크
|
Portal di Ensiklopedia Dunia