aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/control/security/capability.lux
diff options
context:
space:
mode:
authorEduardo Julian2021-08-27 20:59:34 -0400
committerEduardo Julian2021-08-27 20:59:34 -0400
commitc5b61d2f46ac19bf511197f3a537c4be0f47df33 (patch)
treecd62d188403e9b3998ba293dc5308719a430f1fe /stdlib/source/library/lux/control/security/capability.lux
parente814f667aed509a70bd386dcd54628929134def4 (diff)
Updates to the Ruby compiler.
Diffstat (limited to '')
-rw-r--r--stdlib/source/library/lux/control/security/capability.lux37
1 files changed, 19 insertions, 18 deletions
diff --git a/stdlib/source/library/lux/control/security/capability.lux b/stdlib/source/library/lux/control/security/capability.lux
index ec84db916..e6d2617c9 100644
--- a/stdlib/source/library/lux/control/security/capability.lux
+++ b/stdlib/source/library/lux/control/security/capability.lux
@@ -30,13 +30,13 @@
(-> input output)
(def: capability
- (All [brand input output]
+ (All (_ brand input output)
(-> (-> input output)
(Capability brand input output)))
(|>> :abstraction))
(def: .public (use capability input)
- (All [brand input output]
+ (All (_ brand input output)
(-> (Capability brand input output)
input
output))
@@ -48,24 +48,25 @@
|declaration|.parser
(<>.maybe |annotations|.parser)
(<c>.form ($_ <>.and <c>.local_identifier <c>.any <c>.any))))])
- (do {! meta.monad}
- [this_module meta.current_module_name
- .let [[name vars] declaration]
- g!brand (\ ! each (|>> %.code code.text)
- (macro.identifier (format (%.name [this_module name]))))
- .let [capability (` (..Capability (.primitive (~ g!brand)) (~ input) (~ output)))]]
- (in (list (` (type: (~ export_policy)
- (~ (|declaration|.format declaration))
- (~ capability)))
- (` (def: (~ (code.local_identifier forger))
- (All [(~+ (list\each code.local_identifier vars))]
- (-> (-> (~ input) (~ output))
- (~ capability)))
- (~! ..capability)))
- ))))
+ (macro.with_identifiers [g!_]
+ (do {! meta.monad}
+ [this_module meta.current_module_name
+ .let [[name vars] declaration]
+ g!brand (\ ! each (|>> %.code code.text)
+ (macro.identifier (format (%.name [this_module name]))))
+ .let [capability (` (..Capability (.primitive (~ g!brand)) (~ input) (~ output)))]]
+ (in (list (` (type: (~ export_policy)
+ (~ (|declaration|.format declaration))
+ (~ capability)))
+ (` (def: (~ (code.local_identifier forger))
+ (All ((~ g!_) (~+ (list\each code.local_identifier vars)))
+ (-> (-> (~ input) (~ output))
+ (~ capability)))
+ (~! ..capability)))
+ )))))
(def: .public (async capability)
- (All [brand input output]
+ (All (_ brand input output)
(-> (Capability brand input (IO output))
(Capability brand input (Async output))))
(..capability (|>> ((:representation capability)) async.future)))