2016-04-05 16 views
1

このリストは([(Double,Double)],[(Double,Double)])です。 example list = ([(1.0,1.0), (2.0,1.0), (1.0,1.0), (1.0,3.0)],[(1.0,4.0), (1.0,5.0), (1.0,1.0), (1.0,2.0), (1.0,3.0), (1.0,4.0), (1.0,5.0)])Haskellのリスト操作

第4タプル(1.0,3.0)の後にすべてのデータにアクセスするにはどうすればよいですか。私はすでにテール機能を試しましたが、うまくいかないようです。ありがとう。

+0

私はタイプの値であると仮定正しいとあなたの型宣言はない - したがって私は型を調整した – epsilonhalbe

+0

あなたがアクセスすることによって意味を具体化していただけますか?また、そのような関数の予想される入出力を表示できますか? – epsilonhalbe

+0

外部タプルの最初のリストにいくつのタプルがあるかにかかわらず、4番目のタプルの後にすべてのデータに常にアクセスすることは問題ですか?それとも、外側のタプルの2番目のリストのすべてのデータを取得することですか? – dvaergiller

答えて

1

これはリストではなく、リストのタプルです。実際、タプルのリストのタプルです。

snd ([(1.0,1.0), (2.0,1.0), (1.0,1.0), (1.0,3.0)],[(1.0,4.0), (1.0,5.0), (1.0,1.0), (1.0,2.0), (1.0,3.0), (1.0,4.0), (1.0,5.0)]) 

この利回り:ここから先

[(1.0,4.0),(1.0,5.0),(1.0,1.0),(1.0,2.0),(1.0,3.0),(1.0,4.0),(1.0,5.0)] 

、あなたは第二のリストの一部を取得し続けることができ、タプルの第二の部分を取得しsndコマンドを使用するには

tailまたは!!演算子を使用します。

タプルの最初の部分は、fstコマンドを使用して取得できます。

4

まあ、1のために、あなたのリストが一覧ではありませんが、タプル:)

type MyData = (MyList, MyList) 
type MyList = [MyListElem] 
type MyListElem = (Double, Double) 

は、第二のリストにアクセスすることは、単にsndです。

あなたのケースではそう
snd :: (a,b) -> b 

また
snd :: MyData -> MyList 

Lensを使用して、あなたはその上に直接レンズを使用することができます。

list ^. _2 
+0

助けてくれてありがとう –