Types
Last updated
type alias Person pet = {
name: string,
age: number,
pet: pet
}
type Dog = {
tailWags: number
}
type Cat = {
lives: number
}
me: Person Cat
me =
{
name: "Noah",
age: 29,
pet: { lives: 9 }
}
myCatsLives: number
myCatsLives =
me.pet.lives
you: Person Dog
you =
{
name: "Charlie",
age: 22,
pet: { tailWags: 9001 }
}
yourDogsTailWags: number
yourDogsTailWags =
you.pet.tailWagsviewCurrentPage: string -> HtmlNode msg
viewCurrentPage currentPage =
case currentPage of
"home" ->
div [] [] [ text "Home" ]
"login" ->
div [] [] [ text "login" ]
default ->
div [] [] [ text "This should be impossible" ]type PageMode = Home | Login
viewCurrentPage: PageMode -> HtmlNode msg
viewCurrentPage currentPage =
case currentPage of
Home ->
div [] [] [ text "Home" ]
Login ->
div [] [] [ text "login" ]type Maybe value = Just { value: value } | Nothing
something: Maybe string
something =
Just { value: "Hello" }
nothing: Maybe string
nothing =
Nothing
greeting: Maybe string -> string
greeting maybeGreetingText =
case maybeGreetingText of
Just { value } -> value
Nothing -> "No greeting for you"type Animal = "cat" | "dogtype Maybe a = Just { value: a } | Nothingtype Just<a> = {
kind: "Just";
value: a;
};
function Just<a>(args: { value: a }): Just<a> {
return {
kind: "Just",
...args,
};
}
type Nothing = {
kind: "Nothing";
};
function Nothing(args: {}): Nothing {
return {
kind: "Nothing",
...args,
};
}
type Maybe<a> = Just<a> | Nothing;type alias Model = { age: number }type Model = {
name: string
}
function Model(args: { name: string }): Model {
return {
...args,
};
}type Animal = "cat" | "dog"type Animal = "cat" | "dog"