Haskell使用类型为的实例读入main
如何在我的main中使用实例读取 现在我有以下几点:Haskell使用类型为的实例读入main,haskell,main,rational-number,Haskell,Main,Rational Number,如何在我的main中使用实例读取 现在我有以下几点: data Term = Monom (Float,Int) | Addition (Term,Term) | Subtraction (Term,Term) | Multiplication (Term,Term) | Division (Term,Term) deriving(Show) instance Read Term where readsPrec _ inp =
data Term = Monom (Float,Int)
| Addition (Term,Term)
| Subtraction (Term,Term)
| Multiplication (Term,Term)
| Division (Term,Term)
deriving(Show)
instance Read Term where
readsPrec _ inp = let[(a,b)] = lex inp in
case a of
"x" -> readsPrec 0 b
"^" -> [(Monom (1.0,(read b::Int)), "")]
c -> let[(d, "")] = readsPrec 0 b in
[(Monom( (read c::Float),((\(Monom(x,y)) -> y) d)), "")]
--Aufruf: (read "2x^2")::Term
main :: IO ()
main = do
putStrLn "Insert a Term:"
inpStr <- getLine
let outStr = (read inpStr)
putStrLn outStr
而不是putStrLn,因为读工具显示,但解释器让我发疯。。。
任何帮助都将受到欢迎您可以在
let
中使用类型限定符。您的main
如下所示:
main :: IO ()
main = do
putStrLn "Insert a Term:"
inpStr <- getLine
let outStr = read inpStr :: Term
putStrLn $ show outStr
main::IO()
main=do
putStrLn“插入一个术语:”
inpStr
main :: IO ()
main = do
putStrLn "Insert a Term:"
inpStr <- getLine
let outStr = read inpStr :: Term
putStrLn $ show outStr