2016-06-24 4 views
0

にクワインタイプの確立、それが部分式を解析するために自分自身を使用しています。しかし、このタイプの結果はどうなるでしょうか?私は正確な型を与える方法がわからないので、見てのとおり、問題を再現するために、私はやや同様の問題は、私はあなたが見る構文</p> <pre><code>lazy val expr: Parser[Term ~ Option[<recursion>]] = term ~ opt(expr) </code></pre> <p>の文字列を解析する必要がScalaの

def quine(depth: Int, result: (Any, Option[Any])): (Any, Option[Any]) = 
    if (depth == 0) result else {quine(depth - 1, (depth, Some(result)))} 
quine(5, (true, None)) 

created、私はAnyを使用しました。

リストは、何らかの形でプロトタイプList[A]を定義し、Cons[A](head: A, tail: List[A])といくつかの魔法を追加しましたNilです。これにより、何らかの形でリストが再現されます。しかし、私の場合はどうしたらいいですか?

答えて

0

あなたresultタイプは関数の定義と呼び出しの間で異なっているので、私は(最初の要素が動作しないことができるという、かつての中Int、後者でBooleanです)、あなたはここでやろうとしているかわかりません。

しかし、それは単なるタイプミスだっ提供、このようなものは、トリックを行う必要があります。

case class Quine(n: Int, q: Option[Quine]) 
def quine(depth: Int, result: Quine): Quine = 
    if (depth == 0) result else 
    quine(depth - 1, Quine(depth, Some(result))) 

quine(5, Quine(6, None)) 
関連する問題

 関連する問題