packages feed

language-elm 0.0.9.0 → 0.0.10.0

raw patch · 2 files changed

+87/−1 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

README.md view
@@ -1,1 +1,87 @@ # 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+```haskell+import Elm.Decleration+import Elm.Expression+import Elm.Import+import Elm.Program+import Elm.Type+```++Declare a program type+```haskell+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++```haskell+output :: String+output = renderProgram program+```++Which results in the following output++```elm+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)+```+
language-elm.cabal view
@@ -1,5 +1,5 @@ name:               language-elm-version:            0.0.9.0+version:            0.0.10.0 synopsis:           Generate elm code description:        Generate elm code from an ast homepage:           https://github.com/eliaslfox/language-elm#readme