Dickinson { modImports = [] , modDefs = [ Define { declAnn = () , defName = Name { name = "greeter" :| [] , unique = Unique { unUnique = 5 } , loc = () } , defExpr = Lambda { exprAnn = () , lambdaVar = Name { name = "name" :| [] , unique = Unique { unUnique = 7 } , loc = () } , lambdaTy = TyText () , lambdaExpr = Interp { exprAnn = () , exprInterp = [ StrChunk { exprAnn = () , chunkText = "Hello, " } , Var { exprAnn = () , exprVar = Name { name = "name" :| [] , unique = Unique { unUnique = 7 } , loc = () } } , StrChunk { exprAnn = () , chunkText = "!" } ] } } } , Define { declAnn = () , defName = Name { name = "main" :| [] , unique = Unique { unUnique = 6 } , loc = () } , defExpr = Let { exprAnn = () , letBinds = ( Name { name = "boy" :| [] , unique = Unique { unUnique = 8 } , loc = () } , Choice { exprAnn = () , choices = ( 0.5 , Literal { exprAnn = () , litText = "tom" } ) :| [ ( 0.5 , Literal { exprAnn = () , litText = "harry" } ) ] } ) :| [] , letExpr = Apply { exprAnn = () , exprFun = Var { exprAnn = () , exprVar = Name { name = "greeter" :| [] , unique = Unique { unUnique = 5 } , loc = () } } , exprArg = Var { exprAnn = () , exprVar = Name { name = "boy" :| [] , unique = Unique { unUnique = 8 } , loc = () } } } } } ] }