Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/scala/rise/core/DSL/Type.scala
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ object Type {

object ->: {
def unapply[T <: ExprType, U <: ExprType](funType: FunType[T, U]): Option[(T, U)] = {
FunType.unapply(funType)
Some((funType.inT, funType.outT))
}
}

Expand Down
82 changes: 14 additions & 68 deletions src/main/scala/rise/core/DSL/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ package object DSL {
def toMemFun(f: ToBeTyped[Expr]): ToBeTyped[Expr] = fun(x => toMem(f(x)))

case class `if`(b: ToBeTyped[Expr]) {
def `then`(tE: ToBeTyped[Expr]): Object {
def `else` (eE: ToBeTyped[Expr] ): ToBeTyped[Expr]
} = {
new {
def `else`(eE: ToBeTyped[Expr]): ToBeTyped[Expr] = {
select(b)(tE)(eE)
}
def `then`(tE: ToBeTyped[Expr]): `if`.`then` = `if`.`then`(b, tE)
}

object `if` {
case class `then`(b: ToBeTyped[Expr], tE: ToBeTyped[Expr]) {
def `else`(eE: ToBeTyped[Expr]): ToBeTyped[Expr] = {
select(b)(tE)(eE)
}
}
}
Expand Down Expand Up @@ -265,54 +265,8 @@ package object DSL {
}

// noinspection TypeAnnotation
// scalastyle:off structural.type
def apply(ft: FunType[ExprType, ExprType]): Object {
def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier]) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier]
) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier]) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier]
) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier]) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier], ToBeTyped[Identifier]
) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier],
ToBeTyped[Identifier]) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: (ToBeTyped[Identifier], ToBeTyped[Identifier]
) => ToBeTyped[Expr]
): ToBeTyped[Expr]

def apply(f: ToBeTyped[Identifier] => ToBeTyped[Expr]): ToBeTyped[Expr]
} = new {
def apply(ft: FunType[ExprType, ExprType]): WithFunType = WithFunType(ft)
case class WithFunType(ft: FunType[ExprType, ExprType]) {
def apply(f: ToBeTyped[Identifier] => ToBeTyped[Expr]): ToBeTyped[Expr] =
fun(f) :: ft

Expand Down Expand Up @@ -397,7 +351,6 @@ package object DSL {
) => ToBeTyped[Expr]
): ToBeTyped[Expr] = fun(f) :: ft
}
// scalastyle:on structural.type
}

object depFun {
Expand Down Expand Up @@ -471,19 +424,12 @@ package object DSL {
}

// noinspection ScalaUnusedSymbol
// scalastyle:off structural.type
object let {
def apply(e: ToBeTyped[Expr]): Object {
def be(in: ToBeTyped[Expr] => ToBeTyped[Expr]): ToBeTyped[Expr]
def be(in: ToBeTyped[Expr]): ToBeTyped[Expr]
} = new {
def be(in: ToBeTyped[Expr] => ToBeTyped[Expr]): ToBeTyped[Expr] =
primitives.let(e)(fun(in))
def be(in: ToBeTyped[Expr]): ToBeTyped[Expr] =
primitives.let(e)(in)
}
case class let(e: ToBeTyped[Expr]) {
def be(in: ToBeTyped[Expr] => ToBeTyped[Expr]): ToBeTyped[Expr] =
primitives.let(e)(fun(in))
def be(in: ToBeTyped[Expr]): ToBeTyped[Expr] =
primitives.let(e)(in)
}
// scalastyle:on structural.type

object letf {
def apply(in: ToBeTyped[Expr] => ToBeTyped[Expr]): ToBeTyped[Expr] = {
Expand Down
Loading