|
Scala example source code file (TypeCheckerWithExplicitTypesAST.scala)
The TypeCheckerWithExplicitTypesAST.scala Scala example source codepackage scalaz.example package transformers package typecheck object TypeCheckerWithExplicitTypesAST { trait Literal case class Num(i: Int) extends Literal case class Bool(b: Boolean) extends Literal sealed trait Exp case class Id(name: String) extends Exp case class Fun(arg: String, argType: Type, body: Exp) extends Exp case class App(f: Exp, arg: Exp) extends Exp case class Lit(l: Literal) extends Exp case class If(tst: Exp, thn: Exp, els: Exp) extends Exp trait Type case class TyLam(f: Type, arg: Type) extends Type case class TyBuiltin(name: String) extends Type case class TyVar(name: String) extends Type type TypeEnv = Map[String, Type] val numT = TyBuiltin("Num") val boolT = TyBuiltin("Bool") def litToTy(l: Literal): Type = l match { case Num(_) => numT case Bool(_) => boolT } val predef: TypeEnv = Map( "+" -> (TyLam(numT, TyLam(numT, numT))), "-" -> (TyLam(numT, TyLam(numT, numT))), "==" -> (TyLam(numT, TyLam(numT, boolT))), "&&" -> (TyLam(boolT, TyLam(boolT, boolT))), "||" -> (TyLam(boolT, TyLam(boolT, boolT))) ) } Other Scala examples (source code examples)Here is a short list of links related to this Scala TypeCheckerWithExplicitTypesAST.scala source code file: |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.