2016-06-21 5 views
-2

私はhaskellでテストの準備をしています。最後のテストから無限リストリストを生成するためのタスクが見つかりました。Haskellはリストのリストを生成します

generate :: Num n => n -> [[n]] 

ここで、listはn-tupleであり、nはパラメータからのものです。

また、リストをソートする必要があります。 exapleについては

generate 2 = [[0,0],[0,1],[1,0],[1,1],[0,2],[1,2],[2,0],[2,1],[2,2],[0,3],....] 

私は基本機能のみを使用する必要があります。

私はそれが確かに簡単だと知っていますが、私はそれを行う方法は分かりませんし、インターネット上でも見つけることはできません。

私は本当に助けになると嬉しいです。ここで

+2

無限のタプルは、それは 'タイプTUP =(X、TUP)'のようになり、Haskellではできません。 GHCはそのような無限のタイプを拒否します。 '[[n]]'は_list_の型であり、実際には無限になる可能性があります(ただし、実行時のみ、型チェッカーには完全に有限です)。 – leftaroundabout

+1

戻り値が長さ2のリストであることを指定する依存型が必要です。もし可能であっても、Numは広すぎる制約です。長さ1.5(または1.5タプル)のリストを持つことはできません。 – chepner

+2

私は、提供された例から明らかなように、OPはタプルではなく_lists_の無限のリストを生成したいと考えています。 – ErikR

答えて

1

allTuplesWithMaxElem機能のためのヒントです...

あなたは2要素の一つとして表示されなければならないという制限付き数字[0..2]からすべてのリスト[a,b,c,d]を生成するとします。

は、これらの質問を考えてみましょう:

If we set a = 0, what are the possibilities for [b,c,d] ? 
If we set a = 1, what are the possibilities for [b,c,d] ? 
If we set a = 2, what are the possibilities for [b,c,d] ? 
関連する問題