유닛 타입

빈 튜플 () 은 Elm 에서 유닛 타입 이라 부릅니다. 이는 설명이 조금 필요합니다.

타입 변수 (a 로 표현되는) 를 가진 타입 앨리어스가 있습니다:

type alias Message a =
    { code : String
    , body : a
    }

bodyString 으로 갖는 Message 는 이렇게 만듭니다:

readMessage : Message String -> String
readMessage message =
    ...

body 를 정수 (Int) 의 리스트 (List) 로 가지려면 이렇게 만들면 됩니다:

readMessage : Message (List Int) -> String
readMessage message =
    ...

body 의 값이 필요하지 않은 경우는 어떨까요? body 가 어떤 값도 아니라는 뜻으로 유닛 타입을 사용합니다:

readMessage : Message () -> String
readMessage message =
    ...

이 함수는 빈 body 를 가진 Message 입니다. 아무 값 이 아니라, 비어있는 겁니다.

따라서 빈 값을 표현하는 데 유닛 타입이 흔히 사용된다고 볼 수 있습니다.

Task 타입

하나의 실전 예시는 Task 타입입니다. 여러분이 Task 를 쓰게 되면, 유닛 타입을 정말 자주 보게 될겁니다.

보통 Task 는 errorresult 를 가집니다:

Task error result
  • 가끔은 에러가 무시되어도 상관없는 경우가 있죠: Task () result
  • 아니면 결과를 무시하거나: Task error ()
  • 둘 다일때도 있습니다: Task () ()

results matching ""

    No results matching ""