2017-03-31 8 views
2

私はエルムのタイプシグニチャーを理解しようとしています。この関数は何を正確に返しますか?引数を受け入れずに返す関数のようです...エルムのタイプシグニチャーの理解の戻りタイプ

route : Parser (Page -> a) a 
+0

これはどこから来たのか参照を追加できますか? – robertjlooby

+0

[このサンプルアプリケーション](https://github.com/AdrianRibao/elm-spa-example/blob/master/main.elm)の22行目。ありがとう – Matt

答えて

2

私自身の学習課題として、私はこれに答えるつもりです。何かが間違っていると、他の人がチップに入るでしょう。

私はあなたが

type Person = Adult String | Child String Age 

子供は2つのパラメータを取りタイプであるようなものに使用されていることを確認しています。パーサーは同じです。しかし、それはdefinitionはかなり手ごわいですだあなたはパーサが最終的に国のリストに国家から関数のラッパーであるかを確認、言っ

type Parser a b = 
    Parser (State a -> List (State b)) 


type alias State value = 
    { visited : List String 
    , unvisited : List String 
    , params : Dict String String 
    , value : value 
    } 

。最終的には、未訪問の文字列やパラメータのリストが渡されます。それは徐々にそれぞれを訪問し、結果は最終的な「価値」に結びつくでしょう。次に、パーサは、2種類のパラメータを取りながら、ご注意

からaを、bからparseHashがそう

parseHash : Parser (a -> a) a -> Location -> Maybe a 

を定義している、あなたの元

route : Parser (Page -> a) a 

route : Parser (Page -> Page) Page 
でなければならないとしています

をタイプチェックします。

したがって、元の質問に戻るには、routeは、Pageから別のものへ行く方法をカプセル化したパーサーです(非常に一般的なオブジェクトです)。parseHash経由で使用できます。 Pageこれは、もちろん、あなたがルータから期待するものです。

これはあなたが始めることを望む

+1

ありがとう。これは正しい方向に私を指摘した。 – Matt

関連する問題