Haskell のジェネリックに頭を悩ませようとしています。私の問題は、文字列のリストを取得して巨大な文字列を返す連結関数を作成したことです。
concatenate:: [String] -> String
concatenate xs = foldl (\acc x -> acc ++ x) [] xs
しかし、文字列のリストの代わりに、何かのリストを使用したいと思います。これは文字列でも整数でもかまいません。だから、言って
concatenate ["Phil", "is"]
「フィリス」を生成しながら
concatenate [[1,2],[3,4]]
[1,2,3,4] を生成します。
私はそれを見つけました
concatenate:: [a] -> a
concatenate xs = foldl (\acc x -> acc ++ x) [] xs
動作しません。理由がわかりません。タイプ a が何であれ、出力も a である、haskell の動作方法ではありませんか? それとも、後半の問題ですべてのタイプの関数として機能しないのでしょうか?