我有:
data SomeData = SomeData Int Int
getDataFromUser :: SomeData
getDataFromUser = do
{
read (getLine)::SomeData;
}
编辑: 预期型号
我如何能够加以纠正? 我需要这一数据。
我有:
data SomeData = SomeData Int Int
getDataFromUser :: SomeData
getDataFromUser = do
{
read (getLine)::SomeData;
}
编辑: 预期型号
我如何能够加以纠正? 我需要这一数据。
你试图将<代码>getLine作为指令处理,但该编码为IO String
——一项国际交易日志的行动,一旦实施,便会产生一种扼杀。 您可以执行,并从<条码>中获取所产生的价值。 缩略语 IO SomeData :
getDataFromUser :: IO SomeData
getDataFromUser = do
line <- getLine
return $ read line
更广泛地说,我建议在Haskell读一本关于国际交易日志的指南,如:学习你如何合用;它很难对具体问题作出充分理解,例如:
你们需要更多地了解Haskell IO是如何运作的,并确保你们理解。
你们的例子有几点。 如果你想要使用<条码>>>> 读取<条码> 至<条码>,则你需要提供<条码>Read 例。 您可使用缺省:
data SomeData = SomeData Int Int deriving (Read)
www.un.org/chinese/ga/president 这更接近你想要的:
getDataFromUser :: IO SomeData
getDataFromUser = do str <- getLine
return (read str)
This can be simplified to the following, but make sure you understand the above example before you worry too much about this:
getDataFromUser :: IO SomeData
getDataFromUser = liftM read getLine
I m trying my hand at Euler Problem 4 in Haskell. It asks for that largest palindrome formed by multiplying two three-digit numbers. The problem was simple enough, and I thought my Haskell-fu was up ...
Can anybody explain how does foldr work? Take these examples: Prelude> foldr (-) 54 [10, 11] 53 Prelude> foldr (x y -> (x+y)/2) 54 [12, 4, 10, 6] 12.0 I am confused about these executions....
How can I efficiently implement a list data structure where I can have 2 views to the head and end of the list, that always point to a head a tail of a list without expensive calls to reverse. i.e: ...
I am doing problem 61 at project Euler and came up with the following code (to test the case they give): p3 n = n*(n+1) `div` 2 p4 n = n*n p5 n = n*(3*n -1) `div` 2 p6 n = n*(2*n -1) p7 n = n*(5*n -3)...
I ve just started learning about Functional Programming, using Haskel. I m slowly getting through Erik Meijer s lectures on Channel 9 (I ve watched the first 4 so far) and in the 4th video Erik ...
The type of the Prelude function flip is: flip :: (a -> b -> c) -> b -> a -> c I.e., it takes one binary function and two arguments. The type of the Prelude function id is: id :: a -...
group :: Ord a => [(a, [b])] -> [(a, [b])] I want to look up all pairs that have the same fst, and merge them, by appending all the list of bs together where they have the same a and discarding ...
I want to do a popen() / python s subprocess.communicate from Haskell - start a program, give it stdin, and get its stdout/stderr. What s the most direct / Haskellish way to do this?