aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/math/number/ratio.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/library/lux/math/number/ratio.lux')
-rw-r--r--stdlib/source/library/lux/math/number/ratio.lux54
1 files changed, 27 insertions, 27 deletions
diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux
index 225b8da06..c4fe7a26d 100644
--- a/stdlib/source/library/lux/math/number/ratio.lux
+++ b/stdlib/source/library/lux/math/number/ratio.lux
@@ -27,117 +27,117 @@
[#numerator Nat
#denominator Nat]))
-(def: .public (nat value)
+(def .public (nat value)
(-> Ratio (Maybe Nat))
(case (the #denominator value)
1 {.#Some (the #numerator value)}
_ {.#None}))
-(def: (normal (open "_[0]"))
+(def (normal (open "_[0]"))
(-> Ratio Ratio)
(let [common (n.gcd _#numerator _#denominator)]
[..#numerator (n./ common _#numerator)
..#denominator (n./ common _#denominator)]))
-(def: .public ratio
+(def .public ratio
(syntax (_ [numerator <code>.any
?denominator (<>.maybe <code>.any)])
(in (list (` ((~! ..normal) [..#numerator (~ numerator)
..#denominator (~ (maybe.else (' 1) ?denominator))]))))))
-(def: .public (= parameter subject)
+(def .public (= parameter subject)
(-> Ratio Ratio Bit)
(and (n.= (the #numerator parameter)
(the #numerator subject))
(n.= (the #denominator parameter)
(the #denominator subject))))
-(def: .public equivalence
+(def .public equivalence
(Equivalence Ratio)
(implementation
- (def: = ..=)))
+ (def = ..=)))
-(def: (equalized parameter subject)
+(def (equalized parameter subject)
(-> Ratio Ratio [Nat Nat])
[(n.* (the #denominator subject)
(the #numerator parameter))
(n.* (the #denominator parameter)
(the #numerator subject))])
-(def: .public (< parameter subject)
+(def .public (< parameter subject)
(-> Ratio Ratio Bit)
(let [[parameter' subject'] (..equalized parameter subject)]
(n.< parameter' subject')))
-(def: .public (<= parameter subject)
+(def .public (<= parameter subject)
(-> Ratio Ratio Bit)
(or (< parameter subject)
(= parameter subject)))
-(def: .public (> parameter subject)
+(def .public (> parameter subject)
(-> Ratio Ratio Bit)
(..< subject parameter))
-(def: .public (>= parameter subject)
+(def .public (>= parameter subject)
(-> Ratio Ratio Bit)
(or (> parameter subject)
(= parameter subject)))
-(def: .public order
+(def .public order
(Order Ratio)
(implementation
- (def: equivalence ..equivalence)
- (def: < ..<)))
+ (def equivalence ..equivalence)
+ (def < ..<)))
-(def: .public (+ parameter subject)
+(def .public (+ parameter subject)
(-> Ratio Ratio Ratio)
(let [[parameter' subject'] (..equalized parameter subject)]
(normal [(n.+ parameter' subject')
(n.* (the #denominator parameter)
(the #denominator subject))])))
-(def: .public (- parameter subject)
+(def .public (- parameter subject)
(-> Ratio Ratio Ratio)
(let [[parameter' subject'] (..equalized parameter subject)]
(normal [(n.- parameter' subject')
(n.* (the #denominator parameter)
(the #denominator subject))])))
-(def: .public (* parameter subject)
+(def .public (* parameter subject)
(-> Ratio Ratio Ratio)
(normal [(n.* (the #numerator parameter)
(the #numerator subject))
(n.* (the #denominator parameter)
(the #denominator subject))]))
-(def: .public (/ parameter subject)
+(def .public (/ parameter subject)
(-> Ratio Ratio Ratio)
(let [[parameter' subject'] (..equalized parameter subject)]
(normal [subject' parameter'])))
-(def: .public (% parameter subject)
+(def .public (% parameter subject)
(-> Ratio Ratio Ratio)
(let [[parameter' subject'] (..equalized parameter subject)
quot (n./ parameter' subject')]
(..- (revised #numerator (n.* quot) parameter)
subject)))
-(def: .public (reciprocal (open "_[0]"))
+(def .public (reciprocal (open "_[0]"))
(-> Ratio Ratio)
[..#numerator _#denominator
..#denominator _#numerator])
-(def: separator ":")
+(def separator ":")
-(def: .public codec
+(def .public codec
(Codec Text Ratio)
(implementation
- (def: (encoded (open "_[0]"))
+ (def (encoded (open "_[0]"))
(all text#composite
(n#encoded _#numerator)
..separator (n#encoded _#denominator)))
- (def: (decoded input)
+ (def (decoded input)
(case (text.split_by ..separator input)
{.#Some [num denom]}
(do try.monad
@@ -150,11 +150,11 @@
{.#Left (text#composite "Invalid syntax for ratio: " input)}))))
(with_template [<identity> <composite> <name>]
- [(def: .public <name>
+ [(def .public <name>
(Monoid Ratio)
(implementation
- (def: identity (..ratio <identity>))
- (def: composite <composite>)))]
+ (def identity (..ratio <identity>))
+ (def composite <composite>)))]
[0 ..+ addition]
[1 ..* multiplication]