Last active
September 13, 2016 06:07
-
-
Save deepak/0b0e46922f61afeff2dc5ac10da19270 to your computer and use it in GitHub Desktop.
moving from Elm's general type to specific type
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Build exposing (..) | |
import Debug | |
type alias Foobar number = | |
{ foo : number, bar : number } | |
build : number -> number -> { foo : number, bar : number } | |
build a b = | |
{ foo = a, bar = b } | |
buildNumber : number -> number -> { foo : number, bar : number } | |
buildNumber foo bar = | |
{ foo = foo, bar = bar } | |
-- inferred type on `elm-repl` is different | |
-- it is | |
-- a -> b -> { bar : b, foo : a } | |
-- but this also does not throw any error | |
buildFoobar : number -> number -> Foobar number | |
buildFoobar foo bar = | |
{ foo = foo, bar = bar } | |
buildFoobar' : number -> number -> Foobar number | |
buildFoobar' foo bar = | |
Foobar foo bar | |
-- calling `buildFoobar` from the `elm-repl` does give `Foobar` | |
-- import Build | |
-- (Debug.log "buildNumber: " (Build.buildNumber 1 2)) | |
-- (Debug.log "buildNumber: " (Build.buildFoobar 1 2)) | |
-- (Debug.log "buildNumber: " (Build.buildFoobar' 1 2)) | |
-- | |
-- | |
-- elm-format barfs on `Debug.log` here | |
-- (Debug.log "build: " (build 1 2)) | |
-- | |
-- elm-format-0.17 Build.elm --output Foo.elm | |
-- Processing file Build.elm | |
-- ERRORS | |
-- -- SYNTAX PROBLEM ---------------------------------------------------- Build.elm | |
-- | |
-- I ran into something unexpected when parsing your code! | |
-- | |
-- 27│ (Debug.log "build: " (build 1 2)) | |
-- ^ | |
-- I am looking for one of the following things: | |
-- | |
-- end of input | |
-- whitespace |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment