ときどき Scala をいじってみます。これまでのところ、自分の仕事では使用できませんが、Scala の機能の組み合わせは魅力的です。キックのために、最初の99 個の Haskell Problemsを可能な限り最も一般的な方法で試すことにしました。最初のいくつかの質問はそれほど難しくありませんでしたが、flatten
. そのようなものを入力する方法がわかりません。
私の質問について具体的に言うと、任意にネストされたSeqLike
s を平坦化するタイプセーフな関数を書くことは可能ですか? そのため、次のように言います。
flatten(List(Array(List(1, 2, 3), List(4, 5, 6)), Array(List(7, 8, 9), List(10, 11, 12))))
戻るだろう
List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12): List[Int]
? これは、Haskell および Scala の問題セットとまったく同じ問題ではないことに注意してください。異種リストではなく、同種だがネストされたシーケンスを平坦化する関数を作成しようとしています。
Web を検索すると、その質問のScala への翻訳が見つかりましたが、それは List[Any] を操作して返します。これには何らかの型の再帰が必要になるというのは正しいですか? それとも、私はこれをより難しくしているのでしょうか?