Skip to content
This repository was archived by the owner on Oct 18, 2021. It is now read-only.

Commit 4fe1242

Browse files
author
Abigail Magalhães
committed
Remove built-in application operator (@@)
edit: i'm double daft
1 parent b5163d4 commit 4fe1242

38 files changed

+73
-66
lines changed

lib/amulet/base.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ let a || b =
1111
let a && b =
1212
if a then force b else false
1313

14+
let f @@ x = f x
15+
1416
let not a = if a then false else true
1517

1618
(* Explicit type signatures for VTA: *)

lib/data/traversable.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ end
1212

1313
instance traversable option begin
1414
let traverse cont = function
15-
| Some x -> (| Some @@ cont x |)
15+
| Some x -> (| Some (cont x) |)
1616
| None -> (| None |)
1717
end
1818

1919
instance traversable (either 'a) begin
2020
let traverse cont = function
21-
| Right a -> (| Right @@ cont a |)
21+
| Right a -> (| Right (cont a) |)
2222
| Left b -> pure @@ Left b
2323
end
2424

src/Backend/Lua/Builtin.hs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,6 @@ builtins =
9191
end
9292
|] )
9393

94-
, ( vOpApp, "__builtin_app", [], Just (2, \[f, x] -> (mempty, [[lua| %f(%x) |]]))
95-
, [luaStmts|
96-
local function __builtin_app(f, x)
97-
return f(x)
98-
end
99-
|] )
100-
10194
, ( vRef, "__builtin_ref", []
10295
, Just (1, \[var] -> ( mempty, [ [lua| { %var, __tag = 'Ref' } |] ]))
10396
, [luaStmts|

src/Core/Builtin.hs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ vBool, vInt, vString, vFloat, vUnit, vLazy, vArrow, vProduct, vList, vRefTy, vKS
1616
vError :: CoVar
1717
vLAZY, vForce :: CoVar
1818
tyvarA, tyvarB, argvarX :: CoVar
19-
vOpApp :: CoVar
2019
vCONS, vNIL :: CoVar
2120
vAssign, vDeref, vRef :: CoVar
2221
vStrVal, vIntVal :: CoVar
@@ -34,7 +33,7 @@ tyvarProxy :: CoVar
3433

3534
tcTypeableApp, tcTypeableKnownKnown :: CoVar
3635

37-
[ vBool, vInt, vString, vFloat, vUnit, vLazy, vArrow, vProduct, vList, vRefTy, vKStrTy, vKIntTy, vRowCons, vError, vLAZY, vForce, tyvarA, tyvarB, argvarX, vOpApp, vCONS, vNIL, vAssign, vDeref, vRef, vStrVal, vIntVal, vExtend, vRestrict, vKSTR, vKINT, vROWCONS, tyvarRecord, tyvarNew, tyvarKey, tyvarType, vEq, vEQ, backendRet, backendClone, tcTypeError, tcErrKind, tcString, tcHCat, tcVCat, tcShowType, tcTypeable, tcUnTypeable, tcTypeRep, tcTYPEABLE, tcTYPEREP, tcEqTypeRep, tcTypeableApp, tcTypeableKnownKnown, tyvarKind, tyvarProxy ] = makeBuiltins
36+
[ vBool, vInt, vString, vFloat, vUnit, vLazy, vArrow, vProduct, vList, vRefTy, vKStrTy, vKIntTy, vRowCons, vError, vLAZY, vForce, tyvarA, tyvarB, argvarX, vCONS, vNIL, vAssign, vDeref, vRef, vStrVal, vIntVal, vExtend, vRestrict, vKSTR, vKINT, vROWCONS, tyvarRecord, tyvarNew, tyvarKey, tyvarType, vEq, vEQ, backendRet, backendClone, tcTypeError, tcErrKind, tcString, tcHCat, tcVCat, tcShowType, tcTypeable, tcUnTypeable, tcTypeRep, tcTYPEABLE, tcTYPEREP, tcEqTypeRep, tcTypeableApp, tcTypeableKnownKnown, tyvarKind, tyvarProxy ] = makeBuiltins
3837
[ ("bool", TypeConVar)
3938
, ("int", TypeConVar)
4039
, ("string", TypeConVar)
@@ -58,8 +57,6 @@ tcTypeableApp, tcTypeableKnownKnown :: CoVar
5857
, ("b", TypeVar)
5958
, ("x", ValueVar)
6059

61-
, ("@@", ValueVar)
62-
6360
-- Lists
6461
, ("Cons", DataConVar)
6562
, ("Nil", DataConVar)
@@ -171,12 +168,7 @@ builtinVarList = vars where
171168
appsTy = foldl1 AppTy
172169

173170
vars :: [(a, Type)]
174-
vars = [ op vOpApp
175-
(ForallTy (Relevant name) StarTy $
176-
ForallTy (Relevant name') StarTy $
177-
ValuesTy [VarTy name `arrTy` VarTy name', VarTy name] `arrTy` VarTy name')
178-
179-
, op vError (ForallTy (Relevant name) StarTy $ tyString `arrTy` VarTy name)
171+
vars = [ op vError (ForallTy (Relevant name) StarTy $ tyString `arrTy` VarTy name)
180172
, op vLAZY (ForallTy (Relevant name) StarTy $
181173
(tyUnit `arrTy` VarTy name) `arrTy` AppTy tyLazy (VarTy name))
182174
, op vForce (ForallTy (Relevant name) StarTy $ AppTy tyLazy (VarTy name) `arrTy` VarTy name)

src/Core/Lower.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ boxedTys = VarMap.fromList
565565
. filter (flip VarSet.member boxed . fst)
566566
$ C.builtinVarList where
567567
boxed = VarSet.fromList
568-
[ C.vOpApp, C.vAssign, C.vExtend, C.vRestrict
568+
[ C.vAssign, C.vExtend, C.vRestrict
569569
, C.tcEqTypeRep
570570
, C.tcTypeableApp, C.tcTypeableKnownKnown
571571
]

src/Syntax/Builtin.hs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ module Syntax.Builtin
2626
, assignName, derefName, refName
2727

2828
, cONSName, nILName, cONSTy, nILTy, cONSTy', nILTy'
29-
, opAppName
3029

3130
, strValName, strValTy, intValName, intValTy
3231
, knownStrName, knownStrTy, knownStrTy'
@@ -133,9 +132,6 @@ lAZYTy' x = TyArr tyUnit x ~> TyApp tyLazy x
133132
cONSTy' x = TyTuple x (TyApp tyList x) ~> TyApp tyList x
134133
nILTy' = TyApp tyList
135134

136-
opAppName :: Var Typed
137-
opAppName = ofCore C.vOpApp
138-
139135
strValName, knownStrName :: Var Typed
140136
strValName = ofCore C.vStrVal
141137
knownStrName = ofCore C.vKSTR
@@ -215,8 +211,7 @@ instance Monoid BuiltinPowule where
215211
builtins :: BuiltinPowule
216212
builtins =
217213
mempty
218-
{ vars = [ (opAppName, a *. b *. (var a ~> var b) ~> var a ~> var b)
219-
, (lAZYName, lAZYTy)
214+
{ vars = [ (lAZYName, lAZYTy)
220215
, (forceName, forceTy)
221216
, (cONSName, cONSTy)
222217
, (nILName, nILTy)

src/Syntax/Desugar.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ expr (Function bs p a) = do
8383
(Match rhs <$> traverse arm bs <*> pure p <*> pure a)
8484
<*> pure a
8585
-- Special case @@ so we can work on skolem variables
86-
expr (BinOp l (VarRef v _) r a) | v == opAppName = App <$> expr l <*> expr r <*> pure a
8786
expr (BinOp l o r a) = BinOp <$> expr l <*> expr o <*> expr r <*> pure a
8887
expr (Ascription e t a) = Ascription <$> expr e <*> pure (ty t) <*> pure a
8988
expr (Record rs a) = Record <$> traverse field rs <*> pure a

src/Syntax/Expr/Instances.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ deriving via AnnotatedVia (CompStmt p) (Ann p) instance Spanned (Ann p) =
100100
parenFun :: Pretty (Var p) => Expr p -> Doc
101101
parenFun f = case f of
102102
Fun{} -> parens (pretty f)
103+
Function{} -> parens (pretty f)
103104
Let{} -> parens (pretty f)
104105
Match{} -> parens (pretty f)
105106
_ -> pretty f

tests/lua/default-method.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
do
22
local use = print
3-
use(function(hc) return "tail" .. "()" end)
3+
use(function(hf) return "tail" .. "()" end)
44
end

tests/lua/default-method.ml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ instance show () begin
1414
let show () = "()"
1515
end
1616

17+
let f @@ x = f x
18+
1719
let _ = use @@ (show_tail : unit -> string)

0 commit comments

Comments
 (0)