Я пишу программу, чтобы помочь моему младшему брату выучить сложение. У меня нет опыта написания программ ввода-вывода, и я застрял с этой ошибкой синтаксического анализа:
MyCode.hs:6:25:
Parse error in pattern: show
Possibly caused by a missing 'do'?
Код:
mathExercise times (a,b) =
if times<=0
then return ()
else do let x = randInt a
let y = randInt b
putStr (show x ++ " + "++ show y++ " = ")
ans <- getInt
if (ans==x+y)
then do print True
mathExercise (times-1) (a,b)
else do print False
randInt
, которая работала бы так, как вы ожидаете. Изучите генерацию случайных чисел в Haskell или рассмотрите возможность использования другого языка для этой задачи. - person AJF   schedule 08.04.2015IO
— просто используйтеrandomIO
- к оператору: вы должны использовать это с чем-то вродеfmap (`mod` 10) randomIO
, чтобы получить его в диапазоне ;) - person Random Dev   schedule 08.04.2015randomInt :: Integer -> IO Integer randomInt n = do time <- getCurrentTime return ( (
rem` n) $ read $ take 6 $ formatTime defaultTimeLocale %q time) -- Извлечь случайное число из монады IO, небезопасно! randInt :: Integer -> Integer randInt = unsafePerformIO . randomInt` - person scholar guy   schedule 17.07.2016