2017-02-13 91 views
2

如何在控制檯中輸入整數,將其存儲在變量中,然後將其作爲我創建的函數的參數傳遞?如何在haskell中輸入一個整數? (在控制檯中輸入)

到目前爲止,它的作品,我不得不做如下:

在最後一行中,你可以看到我是如何被應用的功能,我想要做的是通過控制檯來索要變量作爲整數應用於函數,然後打印結果。

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) 

我做到這一點給我,結果 16920.0

+0

['readLn'](https://hackage.haskell.org/package/base-4.9.1.0/docs/Prelude.html#v:readLn)可能會有所幫助。 – Ryan

回答

1

使用getLinereadLn,然後解析輸入值的類型,你需要的是像這樣:

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) 
+1

非常感謝,它使我完美 – delta1020