mdgriffith / elm-codegen / Elm.Let

This module is for building let expressions.

letIn : a -> Let a

value : String -> Elm.Expression -> Let (Elm.Expression -> a) -> Let a

Destructing values

tuple : String -> String -> Elm.Expression -> Let (( Elm.Expression, Elm.Expression ) -> a) -> Let a

triple : String -> String -> String -> Elm.Expression -> Let (( Elm.Expression, Elm.Expression, Elm.Expression ) -> a) -> Let a

record : List String -> Elm.Expression -> Let (List Elm.Expression -> a) -> Let a

Functions

Here's an example of declaring functions in a let expression:

Elm.Let.letIn
    (\myFn ->
        myFn (Elm.bool True)
    )
    |> Elm.Let.fn "myFn"
        ( "arg", Just Type.bool )
        (\arg ->
            Elm.ifThen arg
                (Elm.string "True")
                (Elm.string "False")
        )
    |> Elm.Let.toExpression

will generate

let
    myFn arg =
        if arg then
            "True"

        else
            "False"
in
myFn True

fn : String -> ( String, Maybe Elm.Annotation.Annotation ) -> (Elm.Expression -> Elm.Expression) -> Let ((Elm.Expression -> Elm.Expression) -> a) -> Let a

fn2 : String -> ( String, Maybe Elm.Annotation.Annotation ) -> ( String, Maybe Elm.Annotation.Annotation ) -> (Elm.Expression -> Elm.Expression -> Elm.Expression) -> Let ((Elm.Expression -> Elm.Expression -> Elm.Expression) -> a) -> Let a

fn3 : String -> ( String, Maybe Elm.Annotation.Annotation ) -> ( String, Maybe Elm.Annotation.Annotation ) -> ( String, Maybe Elm.Annotation.Annotation ) -> (Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression) -> Let ((Elm.Expression -> Elm.Expression -> Elm.Expression -> Elm.Expression) -> a) -> Let a

Converting to an Expression

toExpression : Let Elm.Expression -> Elm.Expression