aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/specification
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/specification')
-rw-r--r--stdlib/source/specification/compositor/analysis/type.lux49
-rw-r--r--stdlib/source/specification/compositor/generation/case.lux98
-rw-r--r--stdlib/source/specification/compositor/generation/common.lux258
-rw-r--r--stdlib/source/specification/compositor/generation/function.lux1
-rw-r--r--stdlib/source/specification/compositor/generation/primitive.lux49
-rw-r--r--stdlib/source/specification/compositor/generation/reference.lux56
-rw-r--r--stdlib/source/specification/compositor/generation/structure.lux106
-rw-r--r--stdlib/source/specification/lux/world/file.lux1
8 files changed, 322 insertions, 296 deletions
diff --git a/stdlib/source/specification/compositor/analysis/type.lux b/stdlib/source/specification/compositor/analysis/type.lux
index c529d124c..c51f0cced 100644
--- a/stdlib/source/specification/compositor/analysis/type.lux
+++ b/stdlib/source/specification/compositor/analysis/type.lux
@@ -1,24 +1,24 @@
(.using
- [lux "*"
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- [pipe {"+" case>}]
- ["[0]" io]
- ["[0]" try]]
- [math
- ["r" random {"+" Random}]]
- [macro
- ["[0]" code]]
- [tool
- [compiler
- [analysis {"+" State+}]
- ["[0]" phase
- [macro {"+" Expander}]
- ["[0]" analysis
- ["[1]/[0]" scope]
- ["[1]/[0]" type]]]]]])
+ [lux "*"
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" pipe]
+ ["[0]" io]
+ ["[0]" try]]
+ [math
+ ["r" random {"+" Random}]]
+ [macro
+ ["[0]" code]]
+ [tool
+ [compiler
+ [analysis {"+" State+}]
+ ["[0]" phase
+ [macro {"+" Expander}]
+ ["[0]" analysis
+ ["[1]/[0]" scope]
+ ["[1]/[0]" type]]]]]])
(def: (check_success+ expander state extension params output_type)
(-> Expander State+ Text (List Code) Type Bit)
@@ -26,11 +26,12 @@
(analysis/type.with_type output_type
(analysis.phase expander (` ((~ (code.text extension)) (~+ params))))))
(phase.result state)
- (case> {try.#Success _}
- true
+ (pipe.case
+ {try.#Success _}
+ true
- {try.#Failure _}
- false)))
+ {try.#Failure _}
+ false)))
(def: check
(Random [Code Type Code])
diff --git a/stdlib/source/specification/compositor/generation/case.lux b/stdlib/source/specification/compositor/generation/case.lux
index 7d6c81a7b..46fd92eb2 100644
--- a/stdlib/source/specification/compositor/generation/case.lux
+++ b/stdlib/source/specification/compositor/generation/case.lux
@@ -1,32 +1,32 @@
(.using
- [lux {"-" case}
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- [pipe {"+" case>}]
- ["[0]" try {"+" Try}]]
- [data
- ["[0]" text ("[1]#[0]" equivalence)
- ["%" format {"+" format}]]
- [number
- ["n" nat]
- ["f" frac]]
- [collection
- ["[0]" list ("[1]#[0]" mix)]]]
- [math
- ["r" random {"+" Random}]]
- [tool
- [compiler
- ["[0]" reference]
- ["[0]" analysis]
- ["[0]" synthesis {"+" Path Synthesis}]
- ["[0]" phase
- ["[1]/[0]" synthesis
- ["[0]" case]]
- ["[0]" extension/synthesis]]]]]
- [///
- [common {"+" Runner}]])
+ [lux {"-" case}
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" pipe]
+ ["[0]" try {"+" Try}]]
+ [data
+ ["[0]" text ("[1]#[0]" equivalence)
+ ["%" format {"+" format}]]
+ [number
+ ["n" nat]
+ ["f" frac]]
+ [collection
+ ["[0]" list ("[1]#[0]" mix)]]]
+ [math
+ ["r" random {"+" Random}]]
+ [tool
+ [compiler
+ ["[0]" reference]
+ ["[0]" analysis]
+ ["[0]" synthesis {"+" Path Synthesis}]
+ ["[0]" phase
+ ["[1]/[0]" synthesis
+ ["[0]" case]]
+ ["[0]" extension/synthesis]]]]]
+ [///
+ [common {"+" Runner}]])
(def: limit Nat 10)
@@ -40,11 +40,12 @@
(def: .public (verify expected)
(-> Frac (Try Any) Bit)
- (|>> (case> {try.#Success actual}
- (f.= expected (:as Frac actual))
+ (|>> (pipe.case
+ {try.#Success actual}
+ (f.= expected (:as Frac actual))
- {try.#Failure _}
- false)))
+ {try.#Failure _}
+ false)))
(def: case
(Random [Synthesis Path])
@@ -249,29 +250,32 @@
(_.test "CODE"
(|> special_input
(run "special_input")
- (case> {try.#Success output}
- true
-
- {try.#Failure _}
- false)))
+ (pipe.case
+ {try.#Success output}
+ true
+
+ {try.#Failure _}
+ false)))
(_.test "PATTERN_MATCHING 0"
(|> (synthesis.branch/case [special_input
special_path])
(run "special_path")
- (case> {try.#Success output}
- true
-
- {try.#Failure _}
- false)))
+ (pipe.case
+ {try.#Success output}
+ true
+
+ {try.#Failure _}
+ false)))
(_.test "PATTERN_MATCHING 1"
(|> (synthesis.branch/case [special_input
special_pattern_path])
(run "special_pattern_path")
- (case> {try.#Success output}
- true
-
- {try.#Failure _}
- false)))
+ (pipe.case
+ {try.#Success output}
+ true
+
+ {try.#Failure _}
+ false)))
))
(def: .public (spec run)
diff --git a/stdlib/source/specification/compositor/generation/common.lux b/stdlib/source/specification/compositor/generation/common.lux
index 88f13e2ae..19041bbb7 100644
--- a/stdlib/source/specification/compositor/generation/common.lux
+++ b/stdlib/source/specification/compositor/generation/common.lux
@@ -1,32 +1,32 @@
(.using
- [lux {"-" i64}
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- [pipe {"+" case>}]
- ["[0]" try {"+" Try}]]
- [data
- ["[0]" bit ("[1]#[0]" equivalence)]
- [number
- ["[0]" i64]
- ["n" nat]
- ["i" int]
- ["f" frac]]
- ["[0]" text ("[1]#[0]" equivalence)
- ["%" format {"+" format}]]
- [collection
- ["[0]" list]]]
- [math
- ["r" random {"+" Random}]]
- [tool
- [compiler
- ["[0]" reference]
- ["[0]" synthesis]]]]
- ["[0]" // "_"
- ["[1][0]" case]
- [//
- [common {"+" Runner}]]])
+ [lux {"-" i64}
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" pipe]
+ ["[0]" try {"+" Try}]]
+ [data
+ ["[0]" bit ("[1]#[0]" equivalence)]
+ [number
+ ["[0]" i64]
+ ["n" nat]
+ ["i" int]
+ ["f" frac]]
+ ["[0]" text ("[1]#[0]" equivalence)
+ ["%" format {"+" format}]]
+ [collection
+ ["[0]" list]]]
+ [math
+ ["r" random {"+" Random}]]
+ [tool
+ [compiler
+ ["[0]" reference]
+ ["[0]" synthesis]]]]
+ ["[0]" // "_"
+ ["[1][0]" case]
+ [//
+ [common {"+" Runner}]]])
(def: safe
(-> Text Text)
@@ -42,11 +42,12 @@
(|> {synthesis.#Extension <extension> (list (synthesis.i64 param)
(synthesis.i64 subject))}
(run (..safe <extension>))
- (case> {try.#Success valueT}
- (n.= (<reference> param subject) (:as Nat valueT))
+ (pipe.case
+ {try.#Success valueT}
+ (n.= (<reference> param subject) (:as Nat valueT))
- {try.#Failure _}
- false)
+ {try.#Failure _}
+ false)
(let [param <param_expr>])))]
["lux i64 and" i64.and param]
@@ -62,13 +63,14 @@
(list (synthesis.i64 subject)
(synthesis.i64 param))}
(run (..safe "lux i64 arithmetic-right-shift"))
- (case> {try.#Success valueT}
- ("lux i64 ="
- (i64.arithmetic_right_shifted param subject)
- (:as I64 valueT))
-
- {try.#Failure _}
- false)
+ (pipe.case
+ {try.#Success valueT}
+ ("lux i64 ="
+ (i64.arithmetic_right_shifted param subject)
+ (:as I64 valueT))
+
+ {try.#Failure _}
+ false)
(let [param (n.% 64 param)])))
))))
@@ -82,11 +84,12 @@
[(_.test <extension>
(|> {synthesis.#Extension <extension> (list (synthesis.i64 subject))}
(run (..safe <extension>))
- (case> {try.#Success valueT}
- (<comp> (<prepare> subject) (:as <type> valueT))
+ (pipe.case
+ {try.#Success valueT}
+ (<comp> (<prepare> subject) (:as <type> valueT))
- {try.#Failure _}
- false)
+ {try.#Failure _}
+ false)
(let [subject <subject_expr>])))]
["lux i64 f64" Frac i.frac f.= subject]
@@ -100,11 +103,12 @@
(|> {synthesis.#Extension <extension> (list (synthesis.i64 param)
(synthesis.i64 subject))}
(run (..safe <extension>))
- (case> {try.#Success valueT}
- (<comp> (<reference> param subject) (:as <outputT> valueT))
+ (pipe.case
+ {try.#Success valueT}
+ (<comp> (<reference> param subject) (:as <outputT> valueT))
- {try.#Failure _}
- false)))]
+ {try.#Failure _}
+ false)))]
["lux i64 +" i.+ Int i.=]
["lux i64 -" i.- Int i.=]
@@ -144,12 +148,13 @@
(|> {synthesis.#Extension <extension> (list (synthesis.f64 param)
(synthesis.f64 subject))}
(run (..safe <extension>))
- (case> {try.#Success valueV}
- (bit#= (<text> param subject)
- (:as Bit valueV))
+ (pipe.case
+ {try.#Success valueV}
+ (bit#= (<text> param subject)
+ (:as Bit valueV))
- _
- false)))]
+ _
+ false)))]
["lux f64 =" f.=]
["lux f64 <" f.<]
@@ -193,65 +198,72 @@
(_.test "Can compare texts for equality."
(and (|> {synthesis.#Extension "lux text =" (list sample_lowerS sample_lowerS)}
(run (..safe "lux text ="))
- (case> {try.#Success valueV}
- (:as Bit valueV)
+ (pipe.case
+ {try.#Success valueV}
+ (:as Bit valueV)
- _
- false))
+ _
+ false))
(|> {synthesis.#Extension "lux text =" (list sample_upperS sample_lowerS)}
(run (..safe "lux text ="))
- (case> {try.#Success valueV}
- (not (:as Bit valueV))
+ (pipe.case
+ {try.#Success valueV}
+ (not (:as Bit valueV))
- _
- false))))
+ _
+ false))))
(_.test "Can compare texts for order."
(|> {synthesis.#Extension "lux text <" (list sample_lowerS sample_upperS)}
(run (..safe "lux text <"))
- (case> {try.#Success valueV}
- (:as Bit valueV)
+ (pipe.case
+ {try.#Success valueV}
+ (:as Bit valueV)
- {try.#Failure _}
- false)))
+ {try.#Failure _}
+ false)))
(_.test "Can get length of text."
(|> {synthesis.#Extension "lux text size" (list sample_lowerS)}
(run (..safe "lux text size"))
- (case> {try.#Success valueV}
- (n.= sample_size (:as Nat valueV))
+ (pipe.case
+ {try.#Success valueV}
+ (n.= sample_size (:as Nat valueV))
- _
- false)))
+ _
+ false)))
(_.test "Can concatenate text."
(|> {synthesis.#Extension "lux text size" (list concatenatedS)}
(run (..safe "lux text size"))
- (case> {try.#Success valueV}
- (n.= (n.* 2 sample_size) (:as Nat valueV))
+ (pipe.case
+ {try.#Success valueV}
+ (n.= (n.* 2 sample_size) (:as Nat valueV))
- _
- false)))
+ _
+ false)))
(_.test "Can find index of sub-text."
(and (|> {synthesis.#Extension "lux text index"
(list concatenatedS sample_lowerS
(synthesis.i64 +0))}
(run (..safe "lux text index"))
- (case> (^multi {try.#Success valueV}
- [(:as (Maybe Nat) valueV)
- {.#Some valueV}])
- (n.= 0 valueV)
+ (pipe.case
+ (^multi {try.#Success valueV}
+ [(:as (Maybe Nat) valueV)
+ {.#Some valueV}])
+ (n.= 0 valueV)
- _
- false))
+ _
+ false))
(|> {synthesis.#Extension "lux text index"
(list concatenatedS sample_upperS
(synthesis.i64 +0))}
(run (..safe "lux text index"))
- (case> (^multi {try.#Success valueV}
- [(:as (Maybe Nat) valueV)
- {.#Some valueV}])
- (n.= sample_size valueV)
+ (pipe.case
+ (^multi {try.#Success valueV}
+ [(:as (Maybe Nat) valueV)
+ {.#Some valueV}])
+ (n.= sample_size valueV)
- _
- false))))
+ _
+ false))))
(let [test_clip (: (-> (I64 Any) (I64 Any) Text Bit)
(function (_ offset length expected)
(|> {synthesis.#Extension "lux text clip"
@@ -259,13 +271,14 @@
(synthesis.i64 offset)
(synthesis.i64 length))}
(run (..safe "lux text clip"))
- (case> (^multi {try.#Success valueV}
- [(:as (Maybe Text) valueV)
- {.#Some valueV}])
- (text#= expected valueV)
-
- _
- false))))]
+ (pipe.case
+ (^multi {try.#Success valueV}
+ [(:as (Maybe Text) valueV)
+ {.#Some valueV}])
+ (text#= expected valueV)
+
+ _
+ false))))]
(_.test "Can clip text to extract sub-text."
(and (test_clip 0 sample_size sample_lower)
(test_clip sample_size sample_size sample_upper))))
@@ -274,14 +287,15 @@
(list sample_lowerS
(synthesis.i64 char_idx))}
(run (..safe "lux text char"))
- (case> (^multi {try.#Success valueV}
- [(:as (Maybe Int) valueV)
- {.#Some valueV}])
- (text.contains? ("lux i64 char" valueV)
- sample_lower)
-
- _
- false)))
+ (pipe.case
+ (^multi {try.#Success valueV}
+ [(:as (Maybe Int) valueV)
+ {.#Some valueV}])
+ (text.contains? ("lux i64 char" valueV)
+ sample_lower)
+
+ _
+ false)))
)))
(def: (io run)
@@ -293,11 +307,12 @@
(|> {synthesis.#Extension "lux io log"
(list (synthesis.text (format "LOG: " message)))}
(run (..safe "lux io log"))
- (case> {try.#Success valueV}
- true
+ (pipe.case
+ {try.#Success valueV}
+ true
- {try.#Failure _}
- false)))
+ {try.#Failure _}
+ false)))
(_.test "Can throw runtime errors."
(and (|> {synthesis.#Extension "lux try"
(list (synthesis.function/abstraction
@@ -306,36 +321,39 @@
synthesis.#body {synthesis.#Extension "lux io error"
(list (synthesis.text message))}]))}
(run (..safe "lux try"))
- (case> (^multi {try.#Success valueV}
- [(:as (Try Text) valueV)
- {try.#Failure error}])
- (text.contains? message error)
+ (pipe.case
+ (^multi {try.#Success valueV}
+ [(:as (Try Text) valueV)
+ {try.#Failure error}])
+ (text.contains? message error)
- _
- false))
+ _
+ false))
(|> {synthesis.#Extension "lux try"
(list (synthesis.function/abstraction
[synthesis.#environment (list)
synthesis.#arity 1
synthesis.#body (synthesis.text message)]))}
(run (..safe "lux try"))
- (case> (^multi {try.#Success valueV}
- [(:as (Try Text) valueV)
- {try.#Success valueV}])
- (text#= message valueV)
+ (pipe.case
+ (^multi {try.#Success valueV}
+ [(:as (Try Text) valueV)
+ {try.#Success valueV}])
+ (text#= message valueV)
- _
- false))))
+ _
+ false))))
(_.test "Can obtain current time in milli-seconds."
(|> (synthesis.tuple (list {synthesis.#Extension "lux io current-time" (list)}
{synthesis.#Extension "lux io current-time" (list)}))
(run (..safe "lux io current-time"))
- (case> {try.#Success valueV}
- (let [[pre post] (:as [Nat Nat] valueV)]
- (n.>= pre post))
+ (pipe.case
+ {try.#Success valueV}
+ (let [[pre post] (:as [Nat Nat] valueV)]
+ (n.>= pre post))
- {try.#Failure _}
- false)))
+ {try.#Failure _}
+ false)))
)))
(def: .public (spec runner)
diff --git a/stdlib/source/specification/compositor/generation/function.lux b/stdlib/source/specification/compositor/generation/function.lux
index c03971eef..e6bdf79c0 100644
--- a/stdlib/source/specification/compositor/generation/function.lux
+++ b/stdlib/source/specification/compositor/generation/function.lux
@@ -5,7 +5,6 @@
[monad {"+" do}]
["[0]" enum]]
[control
- [pipe {"+" case>}]
["[0]" maybe]]
[data
[number
diff --git a/stdlib/source/specification/compositor/generation/primitive.lux b/stdlib/source/specification/compositor/generation/primitive.lux
index c7d486553..a193aa16f 100644
--- a/stdlib/source/specification/compositor/generation/primitive.lux
+++ b/stdlib/source/specification/compositor/generation/primitive.lux
@@ -1,24 +1,24 @@
(.using
- [lux "*"
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- [pipe {"+" case>}]
- ["[0]" try]]
- [data
- ["[0]" bit ("[1]#[0]" equivalence)]
- [number
- ["f" frac]]
- ["[0]" text ("[1]#[0]" equivalence)
- ["%" format {"+" format}]]]
- [math
- ["r" random]]
- [tool
- [compiler
- ["[0]" synthesis]]]]
- [///
- [common {"+" Runner}]])
+ [lux "*"
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" pipe]
+ ["[0]" try]]
+ [data
+ ["[0]" bit ("[1]#[0]" equivalence)]
+ [number
+ ["f" frac]]
+ ["[0]" text ("[1]#[0]" equivalence)
+ ["%" format {"+" format}]]]
+ [math
+ ["r" random]]
+ [tool
+ [compiler
+ ["[0]" synthesis]]]]
+ [///
+ [common {"+" Runner}]])
(def: (f/=' reference subject)
(-> Frac Frac Bit)
@@ -34,11 +34,12 @@
[expected <gen>]
(_.test (%.symbol (symbol <synthesis>))
(|> (run <evaluation_name> (<synthesis> expected))
- (case> {try.#Success actual}
- (<test> expected (:expected actual))
+ (pipe.case
+ {try.#Success actual}
+ (<test> expected (:expected actual))
- {try.#Failure _}
- false))))]
+ {try.#Failure _}
+ false))))]
["bit" synthesis.bit r.bit bit#=]
["i64" synthesis.i64 r.i64 "lux i64 ="]
diff --git a/stdlib/source/specification/compositor/generation/reference.lux b/stdlib/source/specification/compositor/generation/reference.lux
index b3f270445..87c7b605b 100644
--- a/stdlib/source/specification/compositor/generation/reference.lux
+++ b/stdlib/source/specification/compositor/generation/reference.lux
@@ -1,23 +1,23 @@
(.using
- [lux {"-" symbol}
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- [pipe {"+" case>}]
- ["[0]" try]]
- [data
- [number
- ["n" nat]
- ["f" frac]]]
- [tool
- [compiler
- ["[0]" reference]
- ["[0]" synthesis]]]
- [math
- ["r" random {"+" Random}]]]
- [///
- [common {"+" Runner Definer}]])
+ [lux {"-" symbol}
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" pipe]
+ ["[0]" try]]
+ [data
+ [number
+ ["n" nat]
+ ["f" frac]]]
+ [tool
+ [compiler
+ ["[0]" reference]
+ ["[0]" synthesis]]]
+ [math
+ ["r" random {"+" Random}]]]
+ [///
+ [common {"+" Runner Definer}]])
(def: symbol
(Random Symbol)
@@ -31,11 +31,12 @@
expected r.safe_frac]
(_.test "Definitions."
(|> (define name (synthesis.f64 expected))
- (case> {try.#Success actual}
- (f.= expected (:as Frac actual))
+ (pipe.case
+ {try.#Success actual}
+ (f.= expected (:as Frac actual))
- {try.#Failure _}
- false)))))
+ {try.#Failure _}
+ false)))))
(def: (variable run)
(-> Runner Test)
@@ -47,11 +48,12 @@
register
(synthesis.variable/local register)])
(run "variable")
- (case> {try.#Success actual}
- (f.= expected (:as Frac actual))
+ (pipe.case
+ {try.#Success actual}
+ (f.= expected (:as Frac actual))
- {try.#Failure _}
- false)))))
+ {try.#Failure _}
+ false)))))
(def: .public (spec runner definer)
(-> Runner Definer Test)
diff --git a/stdlib/source/specification/compositor/generation/structure.lux b/stdlib/source/specification/compositor/generation/structure.lux
index bf852085d..5fe2a809f 100644
--- a/stdlib/source/specification/compositor/generation/structure.lux
+++ b/stdlib/source/specification/compositor/generation/structure.lux
@@ -1,30 +1,30 @@
(.using
- [lux "*"
- ["_" test {"+" Test}]
- [abstract
- [monad {"+" do}]]
- [control
- [pipe {"+" case>}]
- ["[0]" maybe]
- ["[0]" try]]
- [data
- [number
- ["n" nat]
- ["i" int]]
- ["[0]" text ("[1]#[0]" equivalence)
- ["%" format {"+" format}]]
- [collection
- ["[0]" array {"+" Array}]
- ["[0]" list ("[1]#[0]" functor)]]]
- [math
- ["r" random]]
- ["[0]" ffi {"+" import:}]
- [tool
- [compiler
- ["[0]" analysis]
- ["[0]" synthesis]]]]
- [///
- [common {"+" Runner}]])
+ [lux "*"
+ ["_" test {"+" Test}]
+ [abstract
+ [monad {"+" do}]]
+ [control
+ ["[0]" pipe]
+ ["[0]" maybe]
+ ["[0]" try]]
+ [data
+ [number
+ ["n" nat]
+ ["i" int]]
+ ["[0]" text ("[1]#[0]" equivalence)
+ ["%" format {"+" format}]]
+ [collection
+ ["[0]" array {"+" Array}]
+ ["[0]" list ("[1]#[0]" functor)]]]
+ [math
+ ["r" random]]
+ ["[0]" ffi {"+" import:}]
+ [tool
+ [compiler
+ ["[0]" analysis]
+ ["[0]" synthesis]]]]
+ [///
+ [common {"+" Runner}]])
(import: java/lang/Integer)
@@ -42,26 +42,27 @@
analysis.#right? last?_in
analysis.#value (synthesis.i64 value_in)])
(run "variant")
- (case> {try.#Success valueT}
- (let [valueT (:as (Array Any) valueT)]
- (and (n.= 3 (array.size valueT))
- (let [tag_out (:as java/lang/Integer (maybe.trusted (array.read! 0 valueT)))
- last?_out (array.read! 1 valueT)
- value_out (:as Any (maybe.trusted (array.read! 2 valueT)))
- same_tag? (|> tag_out ffi.int_to_long (:as Nat) (n.= tag_in))
- same_flag? (case last?_out
- {.#Some last?_out'}
- (and last?_in (text#= "" (:as Text last?_out')))
+ (pipe.case
+ {try.#Success valueT}
+ (let [valueT (:as (Array Any) valueT)]
+ (and (n.= 3 (array.size valueT))
+ (let [tag_out (:as java/lang/Integer (maybe.trusted (array.read! 0 valueT)))
+ last?_out (array.read! 1 valueT)
+ value_out (:as Any (maybe.trusted (array.read! 2 valueT)))
+ same_tag? (|> tag_out ffi.int_to_long (:as Nat) (n.= tag_in))
+ same_flag? (case last?_out
+ {.#Some last?_out'}
+ (and last?_in (text#= "" (:as Text last?_out')))
- {.#None}
- (not last?_in))
- same_value? (|> value_out (:as Int) (i.= value_in))]
- (and same_tag?
- same_flag?
- same_value?))))
+ {.#None}
+ (not last?_in))
+ same_value? (|> value_out (:as Int) (i.= value_in))]
+ (and same_tag?
+ same_flag?
+ same_value?))))
- {try.#Failure _}
- false)))))
+ {try.#Failure _}
+ false)))))
(def: (tuple run)
(-> Runner Test)
@@ -71,15 +72,16 @@
(_.test (%.symbol (symbol synthesis.tuple))
(|> (synthesis.tuple (list#each (|>> synthesis.i64) tuple_in))
(run "tuple")
- (case> {try.#Success tuple_out}
- (let [tuple_out (:as (Array Any) tuple_out)]
- (and (n.= size (array.size tuple_out))
- (list.every? (function (_ [left right])
- (i.= left (:as Int right)))
- (list.zipped/2 tuple_in (array.list tuple_out)))))
+ (pipe.case
+ {try.#Success tuple_out}
+ (let [tuple_out (:as (Array Any) tuple_out)]
+ (and (n.= size (array.size tuple_out))
+ (list.every? (function (_ [left right])
+ (i.= left (:as Int right)))
+ (list.zipped/2 tuple_in (array.list tuple_out)))))
- {try.#Failure _}
- false)))))
+ {try.#Failure _}
+ false)))))
(def: .public (spec runner)
(-> Runner Test)
diff --git a/stdlib/source/specification/lux/world/file.lux b/stdlib/source/specification/lux/world/file.lux
index c6a4f3faf..0e4a240d2 100644
--- a/stdlib/source/specification/lux/world/file.lux
+++ b/stdlib/source/specification/lux/world/file.lux
@@ -6,7 +6,6 @@
[monad {"+" do}]
["[0]" predicate]]
[control
- [pipe {"+" case>}]
[io {"+" IO}]
["[0]" maybe ("[1]#[0]" functor)]
["[0]" try ("[1]#[0]" functor)]