2017-11-12 15 views
2

저는 elm 0.18을 사용하고 있습니다.elm의 함수에 대한 유형 시그니처 받기

내가 서둘러 함께 던진 것들을 묶어주는 기능이 있다고 가정 해 보겠습니다. 그것은 작동하지만 형식 서명이 무엇인지 잘 모르겠습니다. elm이 형식 서명과 관련하여 나에게 (또는 힌트를) 말하게하고 싶습니다.

예를 들어 graphql을 사용하고 graphql 문자열, 형식 서명이없는 디코더 및 Cmd Msg을 사용하고 HttpBuilder를 통해 실행하는 함수가 있습니다.

graphQLPost graphiql decoder msg = 
    HttpBuilder.post (url ++ "api") 
     |> HttpBuilder.withStringBody "text/plain" graphiql 
     |> HttpBuilder.withExpect (Http.expectJson decoder) 
     |> HttpBuilder.send msg 

이유는 모르겠지만 작동합니다. 형식 서명 graphQLPost : String -> Json.Decode.Decoder -> Cmd Msg으로 피팅을 시도했지만 오류가 발생합니다.

그림 유형 서명은 느릅 나무를 통해 유도하는 방법을 찾는 것만 큼 중요하지 않습니다. elm-repl에 입력 할 수있는 명령이나 서명을 알려줄 수있는 명령이 있습니까?

답변

2

느릅 나무 REPL은 당신을 위해이 작업을 수행합니다

> import Http 
> import HttpBuilder 
> type Msg = Msg 
> url = "..." 
"..." : String 
> graphQLPost graphiql decoder msg = \ 
|  HttpBuilder.post (url ++ "api") \ 
|   |> HttpBuilder.withStringBody "text/plain" graphiql \ 
|   |> HttpBuilder.withExpect (Http.expectJson decoder) \ 
|   |> HttpBuilder.send msg 
<function> 
    : String 
     -> Json.Decode.Decoder a 
     -> (Result.Result Http.Error a -> msg) 
     -> Platform.Cmd.Cmd msg 

당신이 함수를 작성하고 <Enter> 충돌

, 그것은 당신에게 서명을 보여줍니다. 이 경우 서명은 다음과 같습니다 --warn 옵션을 elm-make 실행

graphQLPost : String 
     -> Json.Decode.Decoder a 
     -> (Result.Result Http.Error a -> msg) 
     -> Platform.Cmd.Cmd msg 
+0

작동합니다. 나는'as' 절로 인해'Json.Decode'와 같은 것들을 제거해야만했지만,'graphQLPost : String -> Decoder a -> (Result.Result Http.Error a-> msg) -> Cmd msg ' –

2

컴파일러가 계정이없는 기능에 대한 형식 주석을 포함 할 것을 제안하게됩니다, 당신은 복사하는 것은 하나를 제공 할 것입니다 붙여 넣기.

또한 Elm 용 Visual Studio 코드 언어 확장과 같은 일부 편집기 통합은 누락 된 유형 주석을 자동으로 추가하기 위해 클릭 할 수있는 힌트 아이콘으로 이러한 종류의 경고를 표시합니다. 키보드에서 손을 떼지 않고 키보드 단축키를 설정할 수 있습니다.