aboutsummaryrefslogtreecommitdiff
path: root/src/Builtin.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-06-03 12:02:31 +0200
committerCharles <sircharlesaze@gmail.com>2020-06-03 12:02:31 +0200
commit99e5658feb48f15f85eaf9680affea2f490459bb (patch)
tree61fa812185892845b36792960435f79e0535043f /src/Builtin.hs
parente8e86cea2bffe23961f0a1bea8ee770343894858 (diff)
downloadcomputorv2-99e5658feb48f15f85eaf9680affea2f490459bb.tar.gz
computorv2-99e5658feb48f15f85eaf9680affea2f490459bb.tar.bz2
computorv2-99e5658feb48f15f85eaf9680affea2f490459bb.zip
Refactoring parsing, Fixing builtin, rewrite everything else
Diffstat (limited to 'src/Builtin.hs')
-rw-r--r--src/Builtin.hs66
1 files changed, 0 insertions, 66 deletions
diff --git a/src/Builtin.hs b/src/Builtin.hs
deleted file mode 100644
index 8287d5a..0000000
--- a/src/Builtin.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-module Builtin where
-
-
-builtinAdd :: Expr -> Expr -> Maybe Expr
-
-builtinAdd (Rational a) (Rational b) = Just $ Rational (a + b)
-builtinAdd (Rational a) (Imaginary b) = Just $ Complex a b
-builtinAdd (Rational a) (Complex br bi) = Just $ Complex (br + a) bi
-
-builtinAdd (Imaginary a) (Imaginary b) = Just $ Imaginary (a + b)
-builtinAdd (Imaginary a) (Rational b) = Just $ Complex b a
-builtinAdd (Imaginary a) (Complex br bi) = Just $ Complex br (a + bi)
-
-builtinAdd (Complex ar ai) (Complex br bi) = Just $ Complex (ar + br) (ai + bi)
-builtinAdd (Complex ar ai) (Rational b) = Just $ Complex (ar + b) ai
-builtinAdd (Complex ar ai) (Imaginary b) = Just $ Complex ar (ai + b)
-
-builtinAdd _ _ = Nothing
-
-
-builtinSub :: Expr -> Expr -> Maybe Expr
-builtinSub a b = a `builtinAdd` ((Rational (-1)) `builtinMul` b)
-builtinSub _ _ = Nothing
-
-
--- could be derived from addition
-builtinMul :: Expr -> Expr -> Maybe Expr
-builtinMul (Rational a) (Rational b) = Just $ Ratinal (a * b)
-builtinMul (Rational a) (Imaginary b) = Just $ Imaginary (a * b)
-builtinMul (Rational a) (Complex br bi) = Just $ Complex (a * br) (a * bi)
-
-builtinMul (Imaginary a) (Imaginary b) = Just $ Imaginary (a * b)
-builtinMul (Imaginary a) (Rational b) = Just $ Complex b a
-builtinMul (Imaginary a) (Complex br bi) = Just $ Complex (a * br) (a * bi)
-
-builtinMul _ _ = Nothing
-
-
-builtinDiv :: Expr -> Expr -> Maybe Expr
-builtinDiv _ (Rational 0) = Nothing
-builtinDiv _ (Imaginary 0) = Nothing
-builtinDiv _ (Complex 0 0) = Nothing
-builtinDiv a b = Just $ a `builtinMul` (b `builtinExp` (Rational -1))
-builtinDiv _ _ = Nothing
-
-
-builtinMod :: Expr -> Expr -> Maybe Expr
-builtinMod _ _ = Nothing
-
-
--- could be derived from multiplication
-builtinExp :: Expr -> Expr -> Maybe Expr
-builtinExp (Rational a) (Rational b) = Just $ Rational (a ** b)
-
-builtinExp (Imaginary a) (Rational b)
- | b < 0 = Just $ (Rational 1) `builtinDiv` ((Imaginary a) `builtinExp` (Rational b)
- | b == 0 = Just $ Rational a
- | b == 1 = Just $ Imaginary a
- | b == 2 = Just $ Rational (-a)
- | b == 3 = Just $ Imaginary (-a)
- | otherwise = Imaginary a `builtinExp` (Rational (b - 4))
-
-builtinExp _ _ = Nothing
-
-builtinDot :: Expr -> Expr -> Maybe Expr
-_ **? _ = Nothing