diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/library/lux/math/number/ratio.lux | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/stdlib/source/library/lux/math/number/ratio.lux b/stdlib/source/library/lux/math/number/ratio.lux index a53f87dd9..a9a494208 100644 --- a/stdlib/source/library/lux/math/number/ratio.lux +++ b/stdlib/source/library/lux/math/number/ratio.lux @@ -23,12 +23,12 @@ [// ["n" nat ("#\." decimal)]]) -(type: #export Ratio +(type: .public Ratio {#.doc (doc "An unsigned ratio of numbers.")} {#numerator Nat #denominator Nat}) -(def: #export (nat value) +(def: .public (nat value) (-> Ratio (Maybe Nat)) (case (get@ #denominator value) 1 (#.Some (get@ #numerator value)) @@ -40,7 +40,7 @@ {#numerator (n./ common numerator) #denominator (n./ common denominator)})) -(syntax: #export (ratio numerator {?denominator (<>.maybe <code>.any)}) +(syntax: .public (ratio numerator {?denominator (<>.maybe <code>.any)}) {#.doc (doc "Rational literals." (ratio numerator denominator) "The denominator can be omitted if it is 1." @@ -48,14 +48,14 @@ (in (list (` ((~! ..normal) {#..numerator (~ numerator) #..denominator (~ (maybe.else (' 1) ?denominator))}))))) -(def: #export (= parameter subject) +(def: .public (= parameter subject) (-> Ratio Ratio Bit) (and (n.= (get@ #numerator parameter) (get@ #numerator subject)) (n.= (get@ #denominator parameter) (get@ #denominator subject)))) -(implementation: #export equivalence +(implementation: .public equivalence (Equivalence Ratio) (def: = ..=)) @@ -67,72 +67,72 @@ (n.* (get@ #denominator parameter) (get@ #numerator subject))]) -(def: #export (< parameter subject) +(def: .public (< parameter subject) (-> Ratio Ratio Bit) (let [[parameter' subject'] (..equalized parameter subject)] (n.< parameter' subject'))) -(def: #export (<= parameter subject) +(def: .public (<= parameter subject) (-> Ratio Ratio Bit) (or (< parameter subject) (= parameter subject))) -(def: #export (> parameter subject) +(def: .public (> parameter subject) (-> Ratio Ratio Bit) (..< subject parameter)) -(def: #export (>= parameter subject) +(def: .public (>= parameter subject) (-> Ratio Ratio Bit) (or (> parameter subject) (= parameter subject))) -(implementation: #export order +(implementation: .public order (Order Ratio) (def: &equivalence ..equivalence) (def: < ..<)) -(def: #export (+ parameter subject) +(def: .public (+ parameter subject) (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [(n.+ parameter' subject') (n.* (get@ #denominator parameter) (get@ #denominator subject))]))) -(def: #export (- parameter subject) +(def: .public (- parameter subject) (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [(n.- parameter' subject') (n.* (get@ #denominator parameter) (get@ #denominator subject))]))) -(def: #export (* parameter subject) +(def: .public (* parameter subject) (-> Ratio Ratio Ratio) (normal [(n.* (get@ #numerator parameter) (get@ #numerator subject)) (n.* (get@ #denominator parameter) (get@ #denominator subject))])) -(def: #export (/ parameter subject) +(def: .public (/ parameter subject) (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject)] (normal [subject' parameter']))) -(def: #export (% parameter subject) +(def: .public (% parameter subject) (-> Ratio Ratio Ratio) (let [[parameter' subject'] (..equalized parameter subject) quot (n./ parameter' subject')] (..- (update@ #numerator (n.* quot) parameter) subject))) -(def: #export (reciprocal (^slots [#numerator #denominator])) +(def: .public (reciprocal (^slots [#numerator #denominator])) (-> Ratio Ratio) {#numerator denominator #denominator numerator}) (def: separator ":") -(implementation: #export codec +(implementation: .public codec (Codec Text Ratio) (def: (encode (^slots [#numerator #denominator])) @@ -151,7 +151,7 @@ (#.Left (text\compose "Invalid syntax for ratio: " input))))) (template [<identity> <compose> <name>] - [(implementation: #export <name> + [(implementation: .public <name> (Monoid Ratio) (def: identity (..ratio <identity>)) |