The General 구조

The General 구조

General 구조는 SML Basis Library 전반에서 쓰이고 넓은 범위의 프로그램에서 유용한 예외, 데이터타입, 함수를 정의해요. General에 정의된 모든 타입과 값은 탑레벨에서 수식 없이 사용할 수 있어요.

출처: 문서

본문

시놉시스 (Synopsis)

signature GENERAL
structure General :> GENERAL

인터페이스 (Interface)

eqtype unit
type exn = exn
exception Bind
exception Match
exception Chr
exception Div
exception Domain
exception Fail of string
exception Overflow
exception Size
exception Span
exception Subscript
val exnName : exn -> string
val exnMessage : exn -> string
datatype order = LESS | EQUAL | GREATER
val ! : 'a ref -> 'a
val := : 'a ref * 'a -> unit
val o : ('b -> 'c) * ('a -> 'b) -> 'a -> 'c
val before : 'a * unit -> 'a
val ignore : 'a -> unit

설명 (Description)

eqtype unit

()로 표기되는 단일 값을 담는 타입으로, 보통 사소한 인자 또는 부수 효과 함수의 반환 값으로 쓰여요.

type exn = exn

예외가 발생되고 처리될 때 전달되는 값의 타입이에요. 이 타입은 생성자가 확장 가능한 집합을 가진 데이터타입처럼 동작한다는 점에서 특별한데, 예외 선언으로 새 생성자가 만들어져요.

exception Bind
exception Match

val 바인딩 또는 각각 case 식이나 함수 적용에서 패턴 매칭이 실패했음을 나타내는 예외예요. 매칭된 값이 제공된 어떤 패턴의 인스턴스도 아닐 때 발생해요.

exception Chr

밑에 깔린 문자 타입이 지원하는 범위를 벗어나는 코드로 문자를 만들려는 시도를 나타내는 예외예요(CHAR.chr 참조).

exception Div

0으로 나누려는 시도를 나타내는 예외예요. SML'90 정의가 요구한 Mod 예외를 대체해요.

exception Domain

수학 함수의 인자가 함수의 정의역 밖에 있음을 나타내는 예외예요. MATH 또는 INT_INF 시그니처에 일치하는 구조의 함수들이 발생시켜요. SML'90 정의가 요구한 Sqrt와 Ln 예외를 대체해요.

exception Fail of string

연산의 실패를 나타내는 데 쓰는 일반 목적 예외예요. SML Basis Library의 어떤 함수도 발생시키지 않지만 사용자와 사용자 정의 라이브러리가 쓰도록 제공돼요.

exception Overflow

산술 함수의 결과가 표현 불가능, 특히 너무 큼을 나타내는 예외예요. SML'90 정의가 요구한 Abs, Exp, Neg, Prod, Quot, Sum 예외를 대체해요.

exception Size

크기가 너무 크거나 음수인 집합 데이터 구조(배열, 문자열, 벡터 등)를 만들려는 시도를 나타내는 예외예요.

exception Span

두 호환되지 않는 부분 문자열에 SUBSTRING.span을 적용하려는 시도를 나타내는 예외예요.

exception Subscript

인덱스가 범위를 벗어났음을 나타내는 예외로, 보통 프로그램이 집합 데이터 구조(리스트, 문자열, 배열, 벡터)의 요소에 접근할 때 발생해요.

exnName ex

예외 ex의 이름을 돌려줘요. 돌아오는 이름은 ex와 별칭을 이루는 어떤 예외 생성자의 이름일 수 있어요.

let exception E1; exception E2 = E1 in exnName E2 end

exnMessage ex

예외 ex에 대응하는 메시지를 돌려줘요. 메시지의 정확한 형식은 구현과 로케일마다 다를 수 있지만 최소한 exnName ex 문자열은 포함해요.

exnMessage Div = "Div"
exnMessage (OS.SysErr ("No such file", NONE)) =
"OS.SysErr \"No such file\""

datatype order = LESS | EQUAL | GREATER

선형 순서를 가진 타입의 요소를 비교할 때 쓰는 order 타입의 값들이에요.

! re

참조 re가 가리키는 값을 돌려줘요.

re := a

참조 re가 값 a를 가리키게 해요.

f o g

f와 g의 함수 합성이에요. 즉 (f o g) af(g a)와 동등해요.

a before b

a를 돌려줘요. a를 평가한 다음 b를 평가한 뒤 a의 값을 돌려주는 표기 축약을 제공해요.

ignore a

()를 돌려줘요. ignore의 목적은 계산 결과를 버리고 ()를 돌려주는 거예요. List.app` 같은 고차 함수가 unit을 돌려주는 함수를 요구하는데 쓸 함수가 다른 타입의 값을 돌려줄 때 유용해요.

더 알아보기 (Learn more)