-1

Haskellに10個のタプルのリストがあり、そのタプルのリストからn番目のタプルを取得したいと思います。しかし、私が見たように、長さ関数だけがそのリストで機能しました。尻尾、または!! 機能が動作しませんでした。どうしたらいいか教えてもらえますか?タプルは整数と文字列で構成されています。たとえば、これを試してみると:

tail [(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8")]

私は抱擁からこのエラーメッセージを受け取ります:

ERROR - Cannot find "show" function for:
*** Expression : tail [(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8"),(3,5,"String1","String2","String3","String4","String5","String6","String7","String8")]
*** Of type    : [(Integer,Integer,[Char],[Char],[Char],[Char],[Char],[Char],[Char],[Char])]
4

1 に答える 1

5

Show3タプルのインスタンスを宣言する方法は次のとおりです。うまくいけば、これはアイデアを示しており、より多くの要素に拡張できます。

Data.Listのインポート(挿入)

インスタンス(Show a、Show b、Show c)=> Show(a、b、c)where
  show(a、b、c)= "(" ++(intercalate "、"([show a、show b、show c]))++ ")"

インスタンス宣言は、論理的含意と同じように読み取ることができます。タイプa、b、およびcの値を表示できる場合、タイプ(a、b、c)のタプルを表示できます。その方法は次のとおりです。

GHCは、15タプルまでのすべてに対してShowインスタンスを定義するため、この場合、おそらくこれを定義する必要はありません。

于 2013-03-21T23:03:50.647 に答える