2016-10-13 8 views
-1

私はこれを持っています:SMLでタプルのタプルにアクセスする方法は?

val a =((1,2)、(1,2,3)、5、(4,5,6));

は、私はいくつかの "X" を返し、このタプルにある機能を必要...

例: いくつかの "5" がタプルである:

funMagic(5)。

復帰する必要があります。

ヘルプ!

+0

あなたもこれを解決しようとしましたか?もしそうなら、あなたの試行とそれが持っている問題を共有してください。 –

+0

リスト(a :: b)a =最初のタプル、b =他のタプルのようにアクセスしようとします。それは2タプルのタプルでのみ機能します。 – Neutron25

+1

'funMagic'は与えられたintが現れる回数を数えることになっているようです。もしそうなら、このタプルのタプルを12 int(ヒント:1行の定義)のリストにフラット化する関数を書くことができます。そして、その結果を関数に渡します。リスト内の要素の出現回数こうすることで、タプルを扱うロジックとカウントのロジックを分離することができます。 –

答えて

2

質問に間違いがあるかもしれません。 SML(OCamlやHaskellのような他の主要な静的型関数プログラミング言語と同様)では、タプルは要素の数と型によって異なる型を持ちます。結果

(int * int) * (int * int * int) * (int * int * int) * int * (int * int * int) 

、関数funMagicできのみ五重(5つの要素を持つタプル)をとり、その要素である自体が2でタプル、3、3:たとえば、タプルaは、以下のタイプを有しています、1、3要素(実際には、SMLには1要素のタプルはありませんが、要素自体と同等であると仮定します)、少なくともtype encodingのトリックを採用しない限りタプルではなくのリストが[[1,2],[1,2,1],[1,2,3],[5],[4,5,6]]など)であることを意味しますか?

+0

あなたの答えは答えよりも多くのコメントであり、通常私はそのような答えに反対しますが、あなたは問題が提起された問題のいくつかについて説明するうえでうまくいっています。 –

関連する問題