Vinnaren i pepparkakshustävlingen!
2015-11-04, 12:32
  #1
Medlem
Jag ska skapa en grafisk räknare i Haskell, tyvärr har jag ett problem med Haskell och vet inte hur jag ska fixa det. Är tacksam för hjälp!

Följande finns i en fil som heter Expr.hs
Kod:
readExpr :: String -> Maybe Expr
readExpr s = 
  case expr modS of
   Just (a,_) -> Just a
   _          -> Nothing
  where
    modS = filter (/= ' ') s

Under här är koden i en annan fil
Kod:
module ExprQC where

import Test.QuickCheck

import Expr

prop_ShowReadExpr :: Expr -> Bool
prop_ShowReadExpr expr =
  readExpr (show expr) == Just (assoc expr)

assoc :: Expr -> Expr
assoc (Add (Add a b) c) = assoc (Add a (Add b c))
assoc (Add a b)         = Add (assoc a) (assoc b)
assoc (Mul (Mul a b) c) = assoc (Mul a (Mul b c))
assoc (Mul a b)         = Mul (assoc a) (assoc b)
assoc (Sin a)           = Sin (assoc a)
assoc (Cos a)           = Cos (assoc a)
assoc a                 = a

Detta meddelandet får jag i GHCi
Kod:
GHCi, version 7.10.2: http://www.haskell.org/ghc/  :? for help
[1 of 2] Compiling Expr             ( Expr.hs, interpreted )
[2 of 2] Compiling ExprQC           ( ExprQC.hs, interpreted )
Ok, modules loaded: ExprQC, Expr.
*ExprQC> quickCheck prop_ShowReadExpr 
*** Failed! Falsifiable (after 1 test):  
Num 0.0

Hoppas detta är tillräcklig information.

Tack.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback