エルムエラー:私は、次のいずれかを探しています:「'」

2016-12-18 17 views
1

私はコンパイルエラーを取得しています:私は、次のいずれかのためにエルムエラー:私は、次のいずれかを探しています:「'」

探しています:

"'" 
"." 
a pattern 
an equals sign '=' 
more letters in this name 
whitespace 

がそれです不完全な型か関数が悪いですか?大文字の最初の手紙?ブロック単位でファイルブロックを構築しようとしましたが、メソッドを追加するとすぐにエラーが発生します。関数型の注釈を削除すると、関数定義にエラーが発生します。私は明らかにここに

module Test exposing (Test, TestRoot, TestId, GetContainedTests) 

type TestId = String 

type alias Test = 
    { id : TestId 
    , containerId : TestId 
    , title : String 
    , children : List Test 
    }  

type alias TestRoot = 
    { id : TestId 
    , title : String 
    , children : List Test 
} 

GetContainedTests: Test -> List Test     -- error here I am looking for one of the following things: "'"  "."  a pattern  an equals sign '='  more letters in this name  whitespace 
GetContainedTests item = 
    let 
     result : List Test 
     result = item.children 
      -- if I comment out the GetContainedTests type annotation, I get an error on the ".map" below: I am looking for one of the following things:  an upper case name 

     List.map {\childItem -> List.append result GetContainedTests childItem} item.children 
    in 
     result 

注意を基本概念を誤解している:(私はそれを歓迎するが)私は機能と助けを求めていませんよ。私はコンパイラエラーを回避しようとしています

答えて

2

あなたが言及した特定のエラーは、あなたの関数の最初の文字として大文字を使用しようとしているためですGetContainedTests。 Elmでは、すべての関数は小文字で始まる必要があります。型、型別名、型コンストラクタ、およびモジュール名だけが大文字で始まる必要があります。

について、あなたはコンパイルエラーを取得しますいくつか他のもの:

  1. List.mapの最初の引数は、中括弧、括弧ではない囲む必要があります。

再帰型エイリアスの定義に関して、コンパイルエラーが発生します。これは、Testエイリアスが自身を参照しているためです。問題の詳細については、read up on the information in the link provided in the error messageを参照してください。コンパイラはまた、Testをエイリアスではなくエイリアスにすることを推奨しています。

type Test 
    = Test 
     { id : TestId 
     , containerId : TestId 
     , title : String 
     , children : List Test 
     } 
+0

この関数をエクスポート(公開)します。それが大文字を持っていない場合、プロトコルに違反していないのでしょうか? –

+1

適切なケーシング、 'module Test exposing(Test、TestRoot、TestId、getContainedTests)'を指定して、上に定義したように関数を公開することができます。大文字のみをエクスポートする 'Go'言語と混同しているのでしょうか? –

+0

ええ、あまりにも多くの新しい言語を一度に –

関連する問題