2017-11-12 10 views
2

私はelm 0.18を使用しています。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>を打ったとき、それはあなたの署名を示しています。この場合、署名は次のとおりです。

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

--warnオプションでelm-makeを実行すると、コンパイラが使用すると、1つを持っていない機能の型注釈を含めることを示唆していることになりますし、あなたがコピーすることが1つを提供します

また、ElmのVisual Studioコード言語拡張などの一部のエディタ統合では、これらの種類の警告がヒントアイコンとして表示され、クリックして欠落している型注釈を自動的に追加することができます。キーボードショートカットを設定して、手をキーボードから離さずに行うことができます。

関連する問題