language-elm: Generate elm code

[ bsd3, library, web ] [ Propose Tags ]

Generate elm code from an ast


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.0.1.0, 0.0.2.0, 0.0.3.0, 0.0.4.0, 0.0.5.0, 0.0.6.0, 0.0.7.0, 0.0.8.0, 0.0.9.0, 0.0.10.0, 0.0.10.1, 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.1.0, 0.1.1.1, 0.1.1.2, 0.1.1.3, 0.2.0.0
Dependencies base (>=4.7 && <5), MissingH, pretty [details]
License BSD-3-Clause
Copyright 2017 Elias Lawson-Fox
Author Elias Lawson-Fox
Maintainer eliaslfox@gmail.com
Category Web
Home page https://github.com/eliaslfox/language-elm#readme
Source repo head: git clone https://github.com/eliaslfox/language-elm
Uploaded by eliaslfox at 2017-08-21T07:28:53Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 10873 total (64 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-08-21 [all 1 reports]

Readme for language-elm-0.0.10.0

[back to package description]

language-elm

A haskell library for generating elm source code from an ast.

Usage

Install language-elm from stack

stack install language-elm

Import the libraries

import Elm.Decleration
import Elm.Expression
import Elm.Import
import Elm.Program
import Elm.Type

Declare a program type

program :: Program
program =
    Program
        "Tuple"
        (Select
            [ Item "first"
            , Item "second"
            , Item "mapFirst"
            , Item "mapSecond"
            ])
        []
        [ Dec
            "first"
            (TApp [TTuple2 (tvar "a1") (tvar "a2"), tvar "a1"])
            [Tuple2 (var "x") (Under)]
            (var "x")
        , Dec
            "second"
            (TApp [TTuple2 (tvar "a1") (tvar "a2"), tvar "a2"])
            [Tuple2 (Under) (var "y")]
            (var "y")
        , Dec
            "mapFirst"
            (TApp
                [ TApp [tvar "a", tvar "b"]
                , TTuple2 (tvar "a") (tvar "a2")
                , TTuple2 (tvar "b") (tvar "a2")
                ])
            [var "func", Tuple2 (var "x") (var "y")]
            (Tuple2 (App "func" [var "x"]) (var "y"))
        , Dec
            "mapSecond"
            (TApp
                [ TApp [tvar "a", tvar "b"]
                , TTuple2 (tvar "a1") (tvar "a")
                , TTuple2 (tvar "a1") (tvar "b")
                ])
            [var "func", Tuple2 (var "x") (var "y")]
            (Tuple2 (var "x") (App "func" [var "y"]))
        ]

Then render the program

output :: String
output = renderProgram program

Which results in the following output

module Tuple exposing (first, second, mapFirst, mapSecond)

first :: ((a1, a2)) -> a1
first (x, _) = x

second :: ((a1, a2)) -> a2
second (_, y) = y

mapFirst :: (a -> b) -> ((a, a2)) -> ((b, a2))
mapFirst func (x, y) = (func x, y)

mapSecond :: (a -> b) -> ((a1, a)) -> ((a1, b))
mapSecond func (x, y) = (x, func y)