spec :: Spec
spec = do
  describe "diff" $ do
    it "diff(x+y,x)" $ do
      diff (x+y) (x) `shouldBe` 1
    it "diff(x*x+y,x)" $ do
      diff (x*x+y) (x) `shouldBe` 2*x
    it "diff(sin(x*x)+y+z,x)" $ do
      diff (sin(x*x)+y+z) (x) `shouldBe` 2*cos(x*x)*x
    it "diff(log(x),x)" $ do
      diff (log(x)) (x) `shouldBe` 1/x
spec :: Spec
spec = do
  describe "diff" $ do
    it "diff(x+y,x)" $ do
      diff (x+y) (x) `shouldBe` 1
    it "diff(x*x+y,x)" $ do
      diff (x*x+y) (x) `shouldBe` 2*x
    it "diff(sin(x*x)+y+z,x)" $ do
      diff (sin(x*x)+y+z) (x) `shouldBe` 2*cos(x*x)*x
    it "diff(log(x),x)" $ do
      diff (log(x)) (x) `shouldBe` 1/x
spec = do
  describe "diff" $ do
    it "diff(x+y,x)" $ do
      diff (x+y) (x) `shouldBe` 1
    it "diff(x*x+y,x)" $ do
      diff (x*x+y) (x) `shouldBe` 2*x
    it "diff(sin(x*x)+y+z,x)" $ do
      diff (sin(x*x)+y+z) (x) `shouldBe` 2*cos(x*x)*x
    it "diff(log(x),x)" $ do
      diff (log(x)) (x) `shouldBe` 1/x