2011-05-10 3 views
2

나는 한동안 SML로 근무 한 적이없는 나는이 코드 줄 건너 온 :혼동하는 형식 선언?

type memory = string -> int; 

이 문자열 a는 int를 반환한다, 또는 완전히 다른 것을 함수로 '메모리'를 정의 하는가 ? 나는 비슷한 선언문을 수색했으나 하나를 찾거나 그것이 무엇인지 파악할 수 없다.

내가 SML/NJ에 넣어 때, 난 그냥이 얻을 :

- type memory = string -> int; 
type memory = string -> int 

답변

8

memory 함수 아니라, 입력 문자열 반환을 취 함수 인 유형의 단지 약자입니다 int. 그래서 어떤 것이 유형 string->int이라고 쓰고 싶으면 memory 유형으로 쓸 수 있습니다.

쓰는 대신 예를 들어 :

- fun foo(f : string->int, s) = f s; 
val foo = fn : (string -> int) * string -> int 

당신은 쓸 수 :

- fun foo(f: memory, s) = f s; 
val foo = fn : memory * string -> int 

이러한 type 선언 코드를 더 읽기 쉽게 (예를 들어, 대신에 한 쌍의 x 유형 int*int의 것을 쓰고 있습니다 (x: int*int)과 같이 약어 type pair = int*int을 작성하면 x은 t와 같은 유형 pair입니다. 그의 (x: pair)).