let app = SrcLoc.noLoc $ HsExpr.HsApp (from_int_t) (undef)
let int_ty = SrcLoc.noLoc $ HsTypes.HsTyVar TysWiredIn.intTyCon_RDR
let expr = HsExpr.ExprWithTySig app int_ty
- let foo_name = mkRdrName "Types.Data.Num" "foo"
- let foo_bind_name = RdrName.mkRdrUnqual $ OccName.mkVarOcc "foo"
- let binds = Bag.listToBag [SrcLoc.noLoc $ HsBinds.VarBind foo_bind_name (SrcLoc.noLoc $ HsExpr.HsVar foo_name)]
- let letexpr = HsExpr.HsLet
- (HsBinds.HsValBinds $ (HsBinds.ValBindsIn binds) [])
- (SrcLoc.noLoc expr)
core <- toCore expr
execCore core
Nothing -> error $ "\nCoreTools.tfvec_len: Not a vector type: " ++ (pprString ty)
[len, el_ty] = args
--- Is this a wild binder?
-is_wild :: CoreSyn.CoreBndr -> Bool
--- wild binders have a particular unique, that we copied from MkCore.lhs to
--- here. However, this comparison didn't work, so we'll just check the
--- occstring for now... TODO
---(Var.varUnique bndr) == (Unique.mkBuiltinUnique 1)
-is_wild bndr = "wild" == (OccName.occNameString . Name.nameOccName . Var.varName) bndr
-
-- Is the given core expression a lambda abstraction?
is_lam :: CoreSyn.CoreExpr -> Bool
is_lam (CoreSyn.Lam _ _) = True