LINUX.ORG.RU

История изменений

Исправление 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

ман лоркод