+import "Prelude"\r
+\r
+// --- Signals ------------------------------------------------------\r
+\r
+data Signal =\r
+ SigSum [Signal]\r
+ | SigConst Double\r
+ | SigNeg Signal\r
+ | SigMul [Signal]\r
+\r
+deriving instance Eq Signal\r
+deriving instance Hashable Signal\r
+deriving instance Show Signal\r
+\r
+instance Additive Signal where\r
+ zero = SigConst 0\r
+ a + b = SigSum [a,b]\r
+ sum l = SigSum l\r
+\r
+instance Ring Signal where\r
+ one = SigConst 1\r
+ neg a = SigNeg a\r
+ fromInteger i = SigConst (fromInteger i)\r
+ a * b = SigMul [a,b]\r
+\r
+/*\r
+instance Real Signal where\r
+ fromDouble d = SigConst d\r
+*/\r
+\r
+main :: Signal\r
+main = 1 + 2 * 3 - 4 \r
+--\r
+???
\ No newline at end of file