История изменений
Исправление zinfandel, (текущая версия) :
Запустил твой код:
import Control.Monad
import System.IO
getValues = do
hFlush stdout
input <- getLine
let tmp = read input
if tmp == 0
then return []
else liftM (tmp :) (getValues)
main = print =<< getValues
*Main> getValues
1
2
3
0
[1,2,3]
Ничего не игнорирует. Все введенные числа возвращаются.
Код можно немного облагородить.
import Control.Monad
import System.IO
import Control.Applicative
getValues = do
hFlush stdout
input <- getLine
case read input of
0 -> return []
x -> (x:) <$> getValues
main = print =<< getValues
ман лоркод
Исходная версия zinfandel, :
Запустил твой код:
import Control.Monad
import System.IO
getValues = do
hFlush stdout
input <- getLine
let tmp = read input
if tmp == 0
then return []
else liftM (tmp :) (getValues)
main = print =<< getValues
*Main> getValues
1
2
3
0
[1,2,3]
Ничего не игнорирует. Все введенные числа возвращаются.
Код можно немного облагородить.
import Control.Monad
import System.IO
import Control.Applicative
getValues = do
hFlush stdout
input <- getLine
case read input of
0 -> return []
x -> (x:) <$> getValues
main = print =<< getValues
ман лоркод