从轻量级模块化分期开始

时间:2014-01-27 17:37:10

标签: scala

我正在尝试开始尝试Lightweight Modular Staging, 但他们的网页缺少一个简单的“测试”示例,显示从开始到结束的所有内容,这将测试所有内容的安装和设置是否正确。结果我正在努力做到这一点。我试图模仿我在LMS核心的test-src子目录中找到的内容。

到目前为止,我已完成以下工作:

然后我尝试创建一个新的SBT项目,其中包含:

配置文件 build.sbt

name := "lms-tutorial"

scalaOrganization := "org.scala-lang.virtualized"

scalaVersion := "2.10.1"

libraryDependencies += "EPFL" %% "lms" % "0.3-SNAPSHOT"

scalacOptions += "-Yvirtualize"

一个简单的程序 src / main / scala / hw.scala

package scala.virtualization.lms
package epfl

import common._

object Hi {
     def snippet(x: Rep[Int]) = {
          def compute(b: Boolean): Rep[Int] = {
               // the if is executed in the first stage
               if (b) 1 else x
          }
          compute(true)+compute(1==1)
     }

     def main(args: Array[String]) =
         println("Hello World!")
}

但我无法编译。我收到以下错误:

[error] ....../src/main/scala/hw.scala:22: not found: type Rep
[error]       def compute(b: Boolean): Rep[Int] = {
[error]                                ^
[error] ....../src/main/scala/hw.scala:21: not found: type Rep
[error] def snippet(x: Rep[Int]) = {
[error]                ^
[error] two errors found
[error] (compile:compile) Compilation failed

'Rep'是LMS的基本构造,我相信它应该从common._导入,但不知何故它不起作用。我做错了什么?

1 个答案:

答案 0 :(得分:0)

抽象类型成员Rep[T]在特征Base内声明。为了使用Rep[T]类型,您需要在包含Base特征的混合合成中编写程序。

开始使用LMS的最简单方法是遵循PLDI 2013中的LMS tutorial