【问题标题】:Establishing quine type in scala在scala中建立quine类型
【发布时间】:2016-06-24 16:24:43
【问题描述】:

我必须用语法解析一个字符串

lazy val expr: Parser[Term ~ Option[<recursion>]] = term ~ opt(expr)

你看,它使用自己来解析子表达式。但是这种类型的结果是什么?为了重现问题,我created 有点类似的问题

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))

如您所见,我使用了Any,因为我不知道如何给出确切的类型。

这些列表以某种方式定义了原型类型List[A],扩展了Cons[A](head: A, tail: List[A]) 和一些神奇的Nil。这允许列表以某种方式重复出现。但是,我该怎么办?

【问题讨论】:

    标签: scala types recursive-datastructures quine


    【解决方案1】:

    我不确定你在这里要做什么,因为你的 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-06
      • 1970-01-01
      • 2019-04-15
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      相关资源
      最近更新 更多