aabbという文字列を[1,1,2,2]という列に変換したいと考えて下記のコードを書きました。
しかし|x=="a" = [1,change_number xs]で型が違うとエラーを吐かれました。
a型にしているのでどのような型でも入れることが出来ると考えているのですが、なぜ動かないのか教えてください
haskell
1change_number::[a]->[a] 2change_number []=[] 3change_number (x:xs) 4 |x=="a" = [1,change_number xs] 5 |x=="b" = [2,change_number xs]
test.hs:19:18: error: ? Couldn't match expected type ‘a’ with actual type ‘[a]’ ‘a’ is a rigid type variable bound by the type signature for: change_number :: forall a. [a] -> [a] at test.hs:16:1-23 ? In the expression: change_number xs In the expression: [1, change_number xs] In an equation for ‘change_number’: change_number (x : xs) | x == "a" = [1, change_number xs] | x == "b" = [2, change_number xs] ? Relevant bindings include xs :: [a] (bound at test.hs:18:18) x :: a (bound at test.hs:18:16) change_number :: [a] -> [a] (bound at test.hs:17:1)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/07/25 05:16