Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell使用类型为的实例读入main_Haskell_Main_Rational Number - Fatal编程技术网

Haskell使用类型为的实例读入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 =

如何在我的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 = 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