Haskell のレベル: 初心者
目標: リストとして表されるツリーの要素のルートを見つける
入力 (ツリー ノード) (配列内の位置はノード番号を示します) : [0,1,9,4,9,6,6,7,8,9]
呼び出された関数: getRoot 3
期待される出力: 9
コード:
li = [0,1,9,4,9,6,6,7,8,9]
getRoot::Integer->Integer
getRoot n | li!!n /= n = getRoot li!!n
getRoot n | otherwise = li!!n
エラーメッセージ:
ERROR file:.\test2.hs:111 - アプリケーションのタイプ エラー *** 式 : リ !! n *** 用語 : n *** タイプ : 整数 *** 不一致 : Int
コンパイラ: WinHugs
関数の型を宣言するために、「Integers」と「Int」のさまざまな組み合わせを試しました。配列アクセスは Integer を返すようですが、失敗した Int と比較されます。Int を Integers に変換しない理由がわかりません。
それとも一緒に別のものですか?
インターネット、チュートリアル、stackoverflow で検索しました。