Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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中输入整数?(在控制台中输入)_Haskell_Io - Fatal编程技术网

如何在haskell中输入整数?(在控制台中输入)

如何在haskell中输入整数?(在控制台中输入),haskell,io,Haskell,Io,如何在控制台中输入整数,将其存储在变量中,然后将其作为已创建函数的参数传递 到目前为止,我必须做到以下几点: 在最后一行中,您可以看到我是如何应用函数的,我想做的是通过控制台请求将变量作为整数应用到函数中,然后打印结果 mayor :: Int -> Int -> Double mayor x y = if x < y then 0.1 else 0.3 compra :: Int ->

如何在控制台中输入整数,将其存储在变量中,然后将其作为已创建函数的参数传递

到目前为止,我必须做到以下几点:

在最后一行中,您可以看到我是如何应用函数的,我想做的是通过控制台请求将变量作为整数应用到函数中,然后打印结果

    mayor :: Int -> Int -> Double
    mayor x y =
        if  x < y 
        then 0.1
            else 0.3


    compra :: Int -> Int -> Int -> Int -> Int -> Int -> Double
    compra n v u iva p vp =
        let valor_compra = (fromIntegral v) * (fromIntegral n) * (1 - mayor n u)
            valor_iva = valor_compra * (fromIntegral iva) / 100
            valor_puntos = fromIntegral (p * vp)
            efectivo = if (valor_puntos < valor_compra) then valor_compra-valor_puntos else 0
        in  valor_iva + efectivo

    main = do
    print (compra 20 2000 7 14 10 1500)
mayor::Int->Int->Double
市长x y=
如果x整数->整数->整数->整数->整数->整数->双精度
压缩v v v iva p vp=
设valor_compra=(从积分v)*(从积分n)*(1-从积分n)
valor_iva=valor_compra*(来自积分iva)/100
valor_puntos=from积分(p*vp)
efectivo=如果(valor_puntos
我做这件事的方式给了我一个结果
16920.0

使用
getLine
readLn
然后将输入值解析为您需要的类型:

mayor :: Int -> Int -> Double
mayor x y =
    if  x < y 
    then 0.1
        else 0.3


compra :: Int -> Int -> Int -> Int -> Int -> Int -> Double
compra n v u iva p vp =
    let valor_compra = (fromIntegral v) * (fromIntegral n) * (1 - mayor n u)
        valor_iva = valor_compra * (fromIntegral iva) / 100
        valor_puntos = fromIntegral (p * vp)
        efectivo = if (valor_puntos < valor_compra) then valor_compra-valor_puntos else 0
    in  valor_iva + efectivo

main = do
       putStrLn "enter value for x: "
       input1 <- getLine
       putStrLn "enter value for y: " 
       input2 <- getLine 
       let x = (read input1 :: Int)
       let y = (read input2 :: Int)
       print (compra x y 7 14 10 1500)
mayor::Int->Int->Double
市长x y=
如果x整数->整数->整数->整数->整数->整数->双精度
压缩v v v iva p vp=
设valor_compra=(从积分v)*(从积分n)*(1-从积分n)
valor_iva=valor_compra*(来自积分iva)/100
valor_puntos=from积分(p*vp)
efectivo=如果(valor_puntosinput1如果在同一行输入整数,我们可以执行如下操作。下面的程序读取两个由空格分隔的数字,并打印它们的和

main :: IO()
main = do
    line <- getLine
    let a = (read (takeWhile (/= ' ') line) :: Int)
    let b = (read (drop 1 (dropWhile (/= ' ') line)) :: Int)
    putStrLn (show (a+b)) 
main::IO()
main=do

线路可能会有帮助。非常感谢,它为我提供了完美的服务