1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | data Expr = Lit Int | Expr :+: Expr | Expr :-: Expr | Expr :*: Expr deriving (Eq, Show) instance Num Expr where (+) = (:+:) (-) = (:-:) (*) = (:*:) negate = (Lit 0 :-:) abs e = e -- todo signum e = Lit 1 -- todo fromInteger = Lit . fromInteger main = do putStr $ show ((2 + 3 * 4) :: Expr) |
ZGF0YSBFeHByID0gTGl0IEludCB8CiAgICBFeHByIDorOiBFeHByIHwKICAgIEV4cHIgOi06IEV4cHIgfAogICAgRXhwciA6KjogRXhwciBkZXJpdmluZyAoRXEsIFNob3cpCgppbnN0YW5jZSBOdW0gRXhwciB3aGVyZQogICAgKCspID0gKDorOikKICAgICgtKSA9ICg6LTopCiAgICAoKikgPSAoOio6KQogICAgbmVnYXRlID0gKExpdCAwIDotOikKICAgIGFicyBlID0gZSAtLSB0b2RvCiAgICBzaWdudW0gZSA9IExpdCAxIC0tIHRvZG8KICAgIGZyb21JbnRlZ2VyID0gTGl0IC4gZnJvbUludGVnZXIKCm1haW4gPSBkbwogICAgcHV0U3RyICQgc2hvdyAoKDIgKyAzICogNCkgOjogRXhwcik=
[1 of 1] Compiling Main ( prog.hs, prog.o ) Linking prog ...
-
upload with new input
-
result: Success time: 0s memory: 3584 kB returned value: 0
Lit 2 :+: (Lit 3 :*: Lit 4)


